2012-07-23 29 views
11

Supponiamo di avere un'attività predefinita, vuota con comportamento predefinito, lanciata con i flag di intent predefinito. L'utente preme il pulsante indietro sul dispositivo. L'attività scompare ... ma come, in realtà?Comportamento del pulsante di back Android

  • Il pulsante di back si sta comportando allo stesso modo come finish()?
  • L'attività è stata eliminata immediatamente (viene chiamato onDestroy)?
  • L'attività è garantita per essere distrutta, ma non immediatamente?
  • C'è qualche possibilità che l'attività non venga distrutta e questa istanza verrà riutilizzata quando questa attività verrà avviata in futuro? (In modo che solo e onStop ->onStart e onResume si chiamano?)

Sto cercando una risposta affidabile, quindi per favore non rispondere se non siete assolutamente sicuri che cosa succede qui.

+4

questo potrebbe essere di tuo interesse: http://developer.android.com/training/basics/activity-lifecycle/index.html –

+0

puoi pubblicare il tuo codice, quindi possiamo giudicare meglio –

+1

C'è qualcosa in 'default , attività vuota con comportamento predefinito, lanciata con flag di intento predefinito che non è possibile riprodurre? Basta creare un progetto predefinito nel tuo IDE. –

risposta

6

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

Questo è un sottocapitolo dalla documentazione ufficiale di Android che risponde alla tua domanda. Si tratta di un sottocapitolo del tema Managing the Activity Lifecycle, che può essere letto qui: http://developer.android.com/training/basics/activity-lifecycle/index.html

E 'sicuramente la pena di leggere l'intero capitolo per conoscere i dettagli circa il comportamento di attività androidi. Ma il sottocapitolo (primo collegamento) è la parte rilevante di questa domanda.

+0

Questa è una [risposta solo per collegamento] (http://meta.stackexchange.com/q/8231/247470), puoi citare le parti pertinenti del documento? Sembra che tu voglia fare del bene costringendo le persone a leggere quegli articoli, provare il metodo Socratic e usare [spoiler markdown] (http://meta.stackexchange.com/q/1191/247470). – TWiStErRob

1

Quando l'utente preme il tasto INDIETRO, l'attività corrente viene spuntata dalla cima dello stack (l'attività è garantita per essere distrutta, ma non immediatamente, potrebbe essere quando le risorse di sistema sono basse) e riprende l'attività precedente (viene ripristinato lo stato precedente dell'interfaccia utente).

Which actions does the back button/back key on Android trigger?

+0

Fai riferimento a questa domanda: http://stackoverflow.com/questions/4778754/kill-activity-on-back-button Se è sempre distrutto, allora perché forzano la finitura() sul retro pulsante? –

+0

Controlla anche la risposta accettata qui: http://stackoverflow.com/questions/3249332/did-back-key-destroy-an-activity –

2

Quando si preme di nuovo, (se non intercettato da qualcosa di simile alla tastiera, frammento, attività, ecc) il sistema operativo (via ActivityManager probabilmente) cercherà di mostrare all'utente la precedente attività nella vostra attività corrente (di nuovo, ignorando lo stack posteriore dei frammenti).

Se non vi è alcuna attività di questo tipo, l'attività verrà interrotta e si passerà all'attività precedente: la schermata principale la maggior parte delle volte o un'altra applicazione che potrebbe aver avviato l'app.

Otterrai il numero onDestroy chiamato presto (dipende da quanto tempo è necessario per avviare l'attività successiva ma su un buon telefono dovrebbe essere inferiore a 100-200ms).

L'istanza di attività non verrà riutilizzata dopo onFinish. Ciò accade prima che l'attività venga distrutta, quindi se hai bisogno di un'altra attività dello stesso tipo, il sistema operativo creerà un'altra istanza.

+0

Non è quello che ti ho chiesto. La domanda è abbastanza precisa. –

+0

"L'attività scompare ... ma come, in realtà?" - Penso di aver risposto alla tua domanda –

+0

E questo è il problema con te. Hai appena letto la prima frase e rispondi senza pensare. Se leggeste il resto, noterete che ho spiegato di cosa sto chiedendo esattamente. –

2

si utilizza dovrebbe guardare in questo try this

e per favore dica specifica cosa si desidera fare con pulsante indietro per le vostre attività di default ......

0

Definitivamente onDestroy() viene chiamato ..... Esistono alcuni scenari in cui l'attività viene distrutta a causa del normale comportamento dell'app, ad esempio quando l'utente preme il pulsante Indietro o l'attività segnala la propria distruzione chiamando finish().