2011-11-03 12 views

risposta

0

Non sono sicuro di averlo capito bene ... Vuoi tornare all'attività precedente? In tal caso, termina l'attività corrente per tornare a quella precedente.

+0

voglio trovare che all'attività E, ho navigato da A, B, C, D qualcosa di simile a questo – azzits

+0

Va bene allora, Rajdeep Dua ha la risposta. : P –

5

Il seguente codice può essere utilizzato per estrarre tutti i compiti e l'attività in alto all'interno di ogni attività nello stack posteriore

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

Questo non è lo stesso del back stack: il back stack può coinvolgere più attività all'interno della stessa attività. Non penso che ci sia un modo per fare ciò che l'OP sta chiedendo. –

+2

Anche questo richiede il permesso GET_TASK – for3st

+0

A partire da LOLLIPOP (sdk 21+) questo è deprecato e restituisce solo un sottogruppo molto piccolo delle informazioni fornite nelle precedenti versioni per motivi di sicurezza – for3st

0

in realtà, è possibile ottenere l'ID attività dal runningtaskinfo utilizzando getRunningTasks e poi, ottenere il recenttaskinfo utilizzando getRecentTasks confrontando l'id dell'attività. ora è possibile riavviare quell'attività utilizzando l'attività di avvio, con l'intestazione di base nel recentaskinfo.

0

Come getRunningTasks(..) è stato deprecato o se non si desidera aggiungere autorizzazioni speciali per la vostra applicazione qui è una soluzione alternativa se tutte le attività sono tue: puoi contrassegnare un identificatore (non l'attività in sé potrebbe essere necessario raccogliere i dati inutili) in un singleton Stack, LinkedList o LinkedHashSet: in onPause() a dd l'identificatore allo stack e rimuoverlo in onResume().

È possibile controllare il contenuto di tali pile per sapere se sono presenti attività e la sequenza che sono state create.

È possibile pulire il codice e dimenticarsi di farlo manualmente se tutte le attività derivano da un'attività di base comune per la propria app.

0

Si consiglia di utilizzare startActivityForResult anziché startActivity, quindi per recuperare l'attività origine/origine, chiamare getCallingActivity(). GetClassName().

Come farà a sapere che viene da casa? Usa getIntent() la sua getAction() -> android.intent.action.MAIN e GetCategories() -> android.intent.category.LAUNCHER

1

Penso che si possa farlo ascoltando le variazioni delle attività , tramite questa API di 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

questo vi aiuterà ad aggiungere a una pila di proprie classi, e vedere lo stato completo come si desidera.

Problemi correlati