2010-11-18 16 views

Respuesta

102

Añadir la Clase auxiliar a continuación:

public class Helper { 

     public static boolean isAppRunning(final Context context, final String packageName) { 
      final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
      final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses(); 
      if (procInfos != null) 
      { 
       for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) { 
        if (processInfo.processName.equals(packageName)) { 
         return true; 
        } 
       } 
      } 
      return false; 
     } 
    } 

Ahora puede comprobar desde el código de abajo si su aplicación deseada está funcionando o no:

if (Helper.isAppRunning(YourActivity.this, "com.your.desired.app")) { 
    // App is running 
} else { 
    // App is not running 
} 
+0

Buena pieza de código, thx! –

+2

Thx, pero como veo cada vez que se ejecuta com.android.browser. Cuando está en primer plano, generalmente está en la 3ª o 4ª posición de la lista; de lo contrario, aún está en la lista. Entonces esta afirmación cada vez es verdadera. ¿Como puedó resolver esté problema? Solo cuando el proceso reciente es navegador, debe escribir "el navegador se está ejecutando". – sjor

+1

un campo 'lru' en RunningAppProcessInfo le dará la información relativa del tiempo de ejecución de la aplicación para una referencia posterior. Consulte la página de documentación: http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html – dhaval

-1

se puede comprobar mediante el método

siguiente
public static boolean isRunning(Context ctx) { 
    ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE); 

    List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

    for (ActivityManager.RunningTaskInfo task : tasks) { 
     if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName())) 
      return true; 
    } 
    return false; 
} 
+0

¿Está trabajando sobre kitkat? en caso afirmativo, proporcione el código ... gracias –

Cuestiones relacionadas