2010-07-08 13 views
6

Ho difficoltà a visualizzare tutte le attività fuori pila utilizzando Intent.FLAG_ACTIVITY_CLEAR_TOP e android: launchMode = "singleInstance".Come si eliminano tutte le attività dallo stack?

Nell'attività dell'applicazione A, viene avviata l'attività B (tramite startActivity) che a sua volta avvia l'attività C (tramite startActivity). Sull'attività C l'utente preme una voce di menu per tornare all'attività A. Quando arrivano all'attività A, desidero solo A sullo stack in modo tale che se fanno clic sul pulsante Indietro tornano alla schermata principale (desktop).

Questo è il codice che sono attualmente in uso quando l'utente preme un pulsante per tornare alla A:

Intent i = new Intent(this, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

Tutte le attività sono definiti come Android: launchMode = "SingleInstance" nel progetto manifesto.

Il mio codice non sembra funzionare. Una volta tornato all'attività A se faccio clic sul pulsante Indietro ritorno all'attività C. Sto fraintendendo come utilizzare Intent.FLAG_ACTIVITY_CLEAR_TOP?

+0

Anche io sto affrontando un problema simile. È stato risolto? Se sì, come hai fatto? – EnthuDeveloper

risposta

2

Ho sempre trovato che il modo migliore per garantire che C venga rimosso dallo stack è chiamare finish() dopo startActivity per rimuovere C dallo stack.

La documentazione legge come se le cose si comportassero nel modo previsto, ma sembrerebbe che non stia succedendo, quindi finish() assicurerà che C venga rimosso.

+0

La chiamata alla fine() rimuove C, ma B rimane comunque in pila. Voglio A, B, C tutto nello stack finché l'utente non richiede specificamente di passare da C -> A. – Richard

+0

FLAG_ACTIVITY_CLEAR_TOP si sbarazzerà di B, ma dalla mia esperienza (e sembra simile al tuo), non ottiene liberati di C. Quindi se combini la bandiera e l'uso di finish() dovresti ottenere quello che vuoi. –

Problemi correlati