2010-04-07 14 views
12

¿Hay alguna manera de visualizar la pila de actividades, en algún momento durante la depuración o la ejecución normal?actividades pila

Respuesta

6

Puede obtener información útil con el administrador de actividades.

ActivityManager   manager = (ActivityManager)getApplication().getSystemService(Activity.ACTIVITY_SERVICE); 

Esto le mostrará la parte superior, inferior y tamaño de la pila, y la descripción puede ser útil. Tendrá que buscar las tareas en ejecución para encontrar la actividad actual.

RunningTaskInfo   task = manager.getRunningTasks(10).get(0); 
task.baseActivity(); 
task.numActivities(); 
task.topActivity(); 
task.description(); 

Tiene un método pkgLst que puede ser útil.

RunningAppProcessInfo app = manager.getRunningAppProcesses().get(0); 
app.pkgList(); 

No es tan útil o sencillo como usted esperaba, pero podría ayudar.

La actividad proporciona el método getCallingActivity() que puede agregar a los registros en Pausa y en Repetición como se sugirió anteriormente.

También hay if (isChild()) getParent(); para actividades incluidas.

+1

Sé que es una pregunta antigua, pero me ayudó excepto que necesitaba agregar este permiso a AndroidManifest:

+0

@MarioLenci GET_TASKS está en desuso en API 21 https://developer.android.com/reference/android/Manifest.permission.html#GET_TASKS –

0

No es que yo sepa. Para dentro de su propia aplicación, puede hacer un seguimiento de esto usted mismo empujándose a su propia estructura de datos de pila en onResume() y saliéndose de esa pila en onPause().

0

No hay una forma directa, creo, pero una forma es poner registros en todas las devoluciones de llamadas lik en create/pause/resume/destroy/etc y ver las llamadas (por ejemplo: Log.d()).

0

en el emulador o en un teléfono raíces puede utilizar el dumpsys comando shell

adb shell dumpsys activity 

que da salida a las tareas existentes. Aquí un pequeño fragmento

Running activities (most recent first): 
TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos} 
    Run #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems} 
    Run #1: HistoryRecord{40735008 com.actionbarsherlock.sample.demos/.SampleList} 
TaskRecord{406de0b8 #2 A com.android.launcher} 
    Run #0: HistoryRecord{405802c8 com.android.launcher/com.android.launcher2.Launcher} 

incluso se puede ver la intención de que se inició la actividad

TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos} 
clearOnBackground=false numActivities=2 rootWasReset=true 
affinity=com.actionbarsherlock.sample.demos 
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.actionbarsherlock.sample.demos/.SampleList} 
realActivity=com.actionbarsherlock.sample.demos/.SampleList 
lastActiveTime=1492068 (inactive for 2s) 
* Hist #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems} 
    packageName=com.actionbarsherlock.sample.demos processName=com.actionbarsherlock.sample.demos 
    launchedFromUid=10040 app=ProcessRecord{40650b68 1840:com.actionbarsherlock.sample.demos/10040} 
    Intent { cmp=com.actionbarsherlock.sample.demos/.ActionItems } 

para extraer sólo las tareas, yo uso grep

adb shell dumpsys activity | grep "Running activities" -A 10 

Fuente: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

Cuestiones relacionadas