Recién comencé a desarrollar una aplicación simple de Android mientras todavía estoy aprendiendo la plataforma.
Estoy usando Eclipse IDE con el complemento ADT 0.9.6.
¿Necesito saber si es posible ver la Activitypila asociada con una tarea?
¿Hay alguna forma de utilizar la herramienta DDMS o alguna otra técnica?
Esencialmente, lo que necesito es poder ver la actividad de la pila de una tarea para asegurarme de que la aplicación se comporte como se esperaba.
Sé que es posible controlar el comportamiento de la tarea en cierta medida mediante el uso de banderas en el Intentobjeto y a través de algunos atributos del <activity>elemento.
Sin embargo, sería bueno tener un tipo de herramienta, especialmente en modo de depuración, que permitiría a los desarrolladores ver la Activitypila directamente.
fuente

Respuestas:
Desde la línea de comandos, puede usar:
adb shell dumpsys activityEsto le pide al administrador de actividades que imprima un volcado de su estado actual. La primera parte de eso es el historial completo de la actividad, organizado por tarea. También hay muchas cosas impresas después de eso, por lo que es posible que deba desplazarse un poco hacia arriba para encontrar lo que desea.
Aquí hay un ejemplo de su salida (el contenido exacto varía según las versiones de la plataforma), que muestra que la tarea principal son los contactos con dos actividades, y detrás del iniciador con una actividad:
Actividades en el estado actual del administrador de actividades: * TaskRecord {44d07218 # 4 A android.task.contacts} clearOnBackground = true numActivities = 2 rootWasReset = true afinidad = android.task.contacts intent = {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10600000 cmp = com.android.contacts / .DialtactsActivity bnds = [125,640] [235,758]} origActivity = com.android.contacts / .DialtactsContactsEntryActivity realActivity = com.android.contacts / .DialtactsActivity lastActiveTime = 288203177 (inactivo durante 14s) * Hist # 8: HistoryRecord {44b87a30 com.android.contacts / .ViewContactActivity} packageName = com.android.contacts processName = android.process.acore launchFromUid = 10004 app = ProcessRecord {44c4f348 1168: android.process.acore / 10004} Intención {act = android.intent.action.VIEW dat = content: //com.android.contacts/contacts/lookup/144i148.144i461a29500afc8eeb/1927 cmp = com.android.contacts / .ViewContactActivity} frontOfTask = false task = TaskRecord {44d07218 # 4 A android.task.contacts} taskAffinity = android.task.contacts realActivity = com.android.contacts / .ViewContactActivity base = / system / app / Contacts.apk / system / app / Contacts.apk data = / data / data / com.android.contacts labelRes = 0x7f090012 icon = 0x7f02006b theme = 0x7f0e0004 stateNotNeeded = false componentSpecified = false isHomeActivity = false configuración = {scale = 1.0 imsi = 310/4 loc = en_US touch = 3 teclas = 2/1/2 nav = 2/2 orien = 1 layout = 34} resultTo = HistoryRecord {44d174d0 com.android.contacts / .DialtactsContactsEntryActivity} resultWho = favoritos resultCode = 2 launchFailed = false haveState = false icicle = null estado = REANUDADO detenido = falso retraso Reanudar = falso acabado = falso keysPaused = false inHistory = true persistent = false launchMode = 0 pantalla completa = true visible = true frozenBeforeDestroy = false thumbnailNeeded = false idle = true waitingVisible = false nowVisible = true * Hist # 7: HistoryRecord {44d174d0 com.android.contacts / .DialtactsContactsEntryActivity} packageName = com.android.contacts processName = android.process.acore launchFromUid = 10004 app = ProcessRecord {44c4f348 1168: android.process.acore / 10004} Intención {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = com.android.contacts / .DialtactsContactsEntryActivity bnds = [125,640] [235,758]} frontOfTask = true task = TaskRecord {44d07218 # 4 A android.task.contacts} taskAffinity = android.task.contacts realActivity = com.android.contacts / .DialtactsActivity base = / system / app / Contacts.apk / system / app / Contacts.apk data = / data / data / com.android.contacts labelRes = 0x7f090007 icon = 0x7f02006b theme = 0x7f0e0000 stateNotNeeded = false componentSpecified = true isHomeActivity = false configuración = {scale = 1.0 imsi = 310/4 loc = en_US touch = 3 teclas = 2/1/2 nav = 2/2 orien = 1 layout = 34} launchFailed = false haveState = true icicle = Bundle [mParcelledData.dataSize = 4196] estado = DETENIDO detenido = verdadero retrasado Reanudar = falso acabado = falso keysPaused = false inHistory = true persistent = false launchMode = 2 pantalla completa = true visible = false frozenBeforeDestroy = false thumbnailNeeded = false idle = true * TaskRecord {44c4ee90 # 2 A com.android.launcher} clearOnBackground = true numActivities = 1 rootWasReset = true afinidad = com.android.launcher intent = {act = android.intent.action.MAIN cat = [android.intent.category.HOME] flg = 0x10600000 cmp = com.android.launcher / .Launcher} realActivity = com.android.launcher / .Launcher lastActiveTime = 214734838 (inactivo para 73483s) * Hist # 6: HistoryRecord {44c4d988 com.android.launcher / .Launcher} packageName = com.android.launcher processName = android.process.acore launchFromUid = 0 app = ProcessRecord {44c4f348 1168: android.process.acore / 10004} Intención {act = android.intent.action.MAIN cat = [android.intent.category.HOME] flg = 0x10000000 cmp = com.android.launcher / .Launcher} frontOfTask = true task = TaskRecord {44c4ee90 # 2 A com.android.launcher} taskAffinity = com.android.launcher realActivity = com.android.launcher / .Launcher base = / system / app / Launcher.apk / system / app / Launcher.apk data = / data / data / com.android.launcher labelRes = 0x7f0a0000 icon = 0x7f020015 theme = 0x103005f stateNotNeeded = true componentSpecified = false isHomeActivity = true configuración = {scale = 1.0 imsi = 310/4 loc = en_US touch = 3 teclas = 2/1/2 nav = 2/2 orien = 1 layout = 34} launchFailed = false haveState = true icicle = Bundle [mParcelledData.dataSize = 5964] estado = DETENIDO detenido = verdadero retrasado Reanudar = falso acabado = falso keysPaused = false inHistory = true persistent = false launchMode = 2 pantalla completa = true visible = false frozenBeforeDestroy = false thumbnailNeeded = false idle = truefuente
adb shell<enter>dumpsys activity | grep -i run.adb shell dmpsys activity, puede obtener para cada lista, por ejemplo,adb shell dmpsys activity activitiesACTIVIDADES DE GESTIÓN DE ACTIVIDADES que contiene la pila principal, Actividades en ejecución y Tareas recientes.dumpsys activity intentspara intentos pendientes;dumpsys activity broadcastspara estado de difusión;dumpsys activity providerspara contenido contenido;dumpsys activity servicespara servicios;dumpsys activity processespara ejecutar procesos.adb shell dumpsys activity | grep -i runoadb shell dumpsys activity activities | grep -i runpara una salida ligeramente más limpia.Puede usar el siguiente comando en su línea de comando para ver las tareas y las pilas en el sistema:
O puede probar TaskLogger , una herramienta simple que creé que puede monitorear todas las actividades y tareas en su aplicación, y generarlas en Logcat en tiempo real.
fuente
Sé que esta es una vieja pregunta, pero esta funcionalidad ahora está integrada en Android Studio:
Luego, en el archivo de texto resultante, busque
ACTIVITY(todo en mayúsculas):fuente
Si desea inspeccionar la pila de tareas de un paquete específico, el siguiente comando lo hará:
fuente
Siempre reviso esta parte de los mensajes de volcado largos ...
Nota: La ejecución n. ° 4 es la actividad que ve ahora en la pantalla. :)
fuente
Puede usar la herramienta hierarchyviewer.bat. Es parte del SDK de Android. Sin embargo, solo funciona con el emulador. Pero es mucho más cómodo y más claro.
Editar: ¡Acabo de encontrar el Visor de jerarquía dentro de Eclipse! Y también funciona con dispositivos reales. Simplemente abra la perspectiva Windows-> Abrir perspectiva-> Vista de jerarquía En la lista puede ver todos los dispositivos y emuladores conectados y la pila de actividades. Y además, en la vista de árbol, puede ver mucha más información sobre la vista en sí.
Editar: El visor de jerarquía solo funcionará con dispositivos de desarrollador. Los dispositivos de producción no pueden hacerlo por razones de seguridad. Para obtener más información, consulte la siguiente respuesta
fuente
Para la lista de tareas recientes
Para la lista de servicios en ejecución
Para la lista de proveedores de contenido actuales
Para la lista de estado de difusión
Para la lista de intenciones pendientes
Para la lista de permisos
fuente
AdbCommandercomplemento y agregar esos comandos en lamacrospestañaHay un complemento para eso ahora:
https://plugins.jetbrains.com/plugin/12293-activity-stack-view
fuente
Solución: 'adb shell dumpsys activity' no funciona con TabActivity. Cuando se selecciona cada elemento de la pestaña, se iniciará la actividad correspondiente. Pero cuando usa 'adb shell dumpsys activity' Siempre devuelve la actividad 'main':
fuente