2011-11-03 12 views

Respuesta

0

No estoy seguro de que lo entiendo bien ... ¿Quieres volver a la actividad anterior? De ser así, termine la actividad actual y volverá a la anterior.

+0

Quiero encontrar que en la actividad E, he navegado desde A, B, C, D algo así – azzits

+0

Bien entonces, Rajdeep Dua tiene la respuesta. : P –

5

El código siguiente se puede utilizar para extraer todas las tareas y la actividad de la parte superior dentro de cada tarea en la pila de vuelta

ActivityManager m = (ActivityManager) ctx.getSystemService(ctx.ACTIVITY_SERVICE); 
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10); 
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator(); 
while(itr.hasNext()){ 
    RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next(); 
    int id = runningTaskInfo.id; 
    CharSequence desc= runningTaskInfo.description; 
    int numOfActivities = runningTaskInfo.numActivities; 
    String topActivity = runningTaskInfo.topActivity.getShortClassName(); 
} 
+4

Esto no es lo mismo que la pila posterior: la pila posterior puede involucrar actividades múltiples dentro de la misma tarea. No creo que haya una manera de hacer lo que el OP está pidiendo. –

+2

También esto necesita el permiso GET_TASK – for3st

+0

A partir de LOLLIPOP (sdk 21+), esto está en desuso y solo devuelve un subconjunto muy pequeño de la información proporcionada en versiones anteriores debido a razones de seguridad – for3st

0

realidad, se puede obtener el ID de tarea desde el runningtaskinfo usando getRunningTasks y luego, obtener el recenttaskinfo usando getRecentTasks comparando el ID de la tarea. ahora puede reiniciar esa actividad usando Startactivity, con el mínimo en la reciente sesiónkinfo.

0

Como getRunningTasks(..) ya no se utiliza o si usted no desea agregar permisos especiales para su aplicación aquí es una solución alternativa si todas las actividades son suyas: puede marcar un identificador (no la actividad en sí misma si es necesario que sea basura) en un singleton Stack, LinkedList o LinkedHashSet: en onPause() a dd el identificador de la pila y elimínelo en onResume().

Puede verificar el contenido de esas pilas para saber si hay alguna actividad y la secuencia en la que se han creado.

Puede limpiar su código y olvidarse de hacerlo manualmente si todas sus actividades se derivan de una actividad base común para su aplicación.

0

Te recomiendo utilizar startActivityForResult en lugar de startActivity, luego para recuperar la actividad de origen/fuente-call getCallingActivity(). GetClassName().

¿Cómo sabrá A A A A A partir vino de casa? Uso getIntent() su getAction() -> android.intent.action.MAIN y GetCategories() -> android.intent.category.LAUNCHER

1

Creo que se puede hacer al escuchar a los cambios de las actividades , a través de esta API de registerActivityLifecycleCallbacks:

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html

esto le ayudará a añadir a una pila de sus propias clases, y ver el estado completo como desee.

Cuestiones relacionadas