2011-10-07 14 views
11

è possibile avviare più attività contemporaneamente? Voglio dire, dal principale creare 3 attività in un certo ordine e solo l'ultimo sarà visibile? Fino ad ora, ero in grado di creare una sola attività.Android - avvio di più attività

Grazie

+3

Perché dovresti farlo? Solo uno può essere attivo alla volta, quindi anche se ne hai fatto molti, solo l'ultimo sarebbe stato mostrato e altri sarebbero stati messi in pausa. –

+1

Assolutamente d'accordo con il commento superiore. Dovresti riconsiderare l'architettura della tua app, perché vorresti iniziare un'attività che non sarà disponibile per l'utente? – Egor

+1

perché è necessario avviare più attività contemporaneamente? –

risposta

3

Prova startActivity(new Intent(...); alla fine del vostro onCreate -Metodo della prima azione. Avvierà immediatamente una nuova attività e interromperà la prima. Con il tasto indietro si ritorna all'ultima attività

+1

Il problema con questo approccio è che se l'attività B viene uccisa (completata) dal sistema dopo l'avvio dell'attività C, e quando l'utente torna all'attività B facendo clic sul pulsante Su, l'attività B su onCreate proverà ad avviare nuovamente l'attività C. – tmin

31

Potrebbe essere necessario qualcosa di simile per avviarsi in profondità nell'app dopo che l'utente ha fatto clic su una notifica per visualizzare ad esempio alcuni contenuti aggiunti di recente.

Intent i = new Intent(this, A.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(i); 

Intent j = new Intent(this, B.class); 
j.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
startActivity(j); 

Intent k = new Intent(this, C.class); 
startActivity(k); 

In questo modo è possibile avviare attività di A, B e C, allo stesso tempo e sopprimere le transizioni per le attività A e B. È possibile ottenere una singola transizione dalla vostra attività in corso per l'attività C. Sono fermamente suggerisco di registrare le chiamate del metodo del ciclo di vita Attività (onCreate, ecc.) su LogCat, ad esempio. Aiuta molto a capire l'ordine degli eventi.

+1

Lavoro confermato, grazie: D –

+0

grazie, funziona. Ma ho un altro requisito. Ho 2 attività A e B. Devo usare startActivityForResult per avviare A da B. Se lo faccio, onActivityResult in A non viene chiamato. C'è un modo? – kishorer747

+0

sembra come @gmale può aiutare con questo – Ewoks

2

Questa può essere una cosa comune da fare in risposta a deep linking o di altri casi d'uso in cui è, in fondo, ha bisogno di ricostruire sinteticamente Task (e tutte le attività che dovrebbe contenere). A volte, basta specificare parents nel manifest non è sufficiente.

Dai uno sguardo allo TaskStackBuilder. Un esempio comune:

TaskStackBuilder.create(this) 
     .addNextIntent(intentOnBottom) 
     // use this method if you want "intentOnTop" to have it's parent chain of activities added to the stack. Otherwise, more "addNextIntent" calls will do. 
     .addNextIntentWithParentStack(intentOnTop) 
     .startActivities(); 
Problemi correlati