Ver la tarea reciente de Android ejecutada por el usuario

Me gustaría ver la tarea reciente de mi teléfono Android. Estaba intentando un código de internet pero ninguno de ellos funciona correctamente. Solo quiero obtener el PID y el nombre de la última aplicación ejecutada por el usuario. Por ejemplo, si ejecuto la aplicación de la calculadora y luego la aplicación de tarea reciente que hice, esta aplicación debería ser capaz de decirme algo así como: “la última aplicación que ha ejecutado es ‘calculadora’ y el PID es ‘2222’ “.

Estaba revisando la página web de desarrolladores de Android para obtener algún código y esto es lo que encontré, pero no sé cómo implementarlo para Android.

ActivityManager.RecentTaskInfo Información que puede recuperar sobre las tareas que el usuario inició o visitó recientemente.

ActivityManager.RunningServiceInfo Información que puede recuperar sobre un servicio en particular que se está ejecutando actualmente en el sistema.

cualquier sugerencia,

Atentamente

ActivityManager.RunningTaskInfo Información que puede recuperar sobre una tarea particular que actualmente se está “ejecutando” en el sistema.

 int numberOfTasks = 1; ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE); //Get some number of running tasks and grab the first one. getRunningTasks returns newest to oldest RunningTaskInfo task = m.getRunningTasks(numberOfTasks).get(0); //Build output String output = "the last application you've executed is '"+task.id+"' and the PID is '"+task.baseActivity.toShortString()+"'"; 

getRunningTasks

RunningTaskInfo

Aquí está mi solución:

 final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final List recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); for (int i = 0; i < recentTasks.size(); i++) { Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+""); } 

¡Ten cuidado! ¡La última identificación no es el PID del proceso! Si desea obtener el PID del proceso, utilicé el siguiente comando:

 mLogcatProc = Runtime.getRuntime().exec(new String[] {"ps"}); 

Lea el resultado para encontrar el nombre de la aplicación y luego divídalo para obtener el proceso PID.

Hace poco estuve revisando los servicios disponibles que también usaba el administrador de actividades. Probablemente simplemente cambie esto al método getRecentTasks (int maxNum, int flags) y modifique el contenido que se muestra a continuación según sus necesidades.

 private boolean isServiceOnline() { final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final List services = activityManager.getRunningServices(Integer.MAX_VALUE); for (int i = 0; i < services.size(); i++) { String packageClassName = services.get(i).service.getClassName(); if (packageClassName.equals("org.couchdb.android.CouchService")) { Log.d(TAG, "Service Nr. " + i + " :" + services.get(i).service); Log.d(TAG, "Service Nr. " + i + " package name : " + services.get(i).service.getPackageName()); Log.d(TAG, "Service Nr. " + i + " class name : " + packageClassName); ; return true; } } return false; }