2010-11-24 14 views

risposta

12

In caso di sonno dispositivo, di attività di `onPause()' sarà chiamato. Leggi activity lifecycle per capire questo.

Il sistema operativo uccide il processo solo quando memoria/risorse sono insufficienti. Le attività vengono uccise per prime, i servizi vengono uccisi solo come ultima risorsa.

Ma non c'è alcuna garanzia che non saranno uccisi. Questo è il motivo per cui dovresti affidarti ai servizi di sistema per chiamarti quando hai bisogno di fare del lavoro: usa AlarmManager per chiamare periodicamente il tuo codice o usare gli ascoltatori per notificare le modifiche del sistema (gps, rete, ecc.)

0

Quando il telefono dorme, le attività non vengono distrutte. Credo che tutto ciò che accadrà sia che le attività rimangano invariate, ma attivate il metodo onPause().

visualizzare questa immagine:

alt text

0

Quando il telefono va a dormire viene chiamato il metodo onPause(). Questo metodo è solo un avvertimento per la tua app. Quindi, a seconda del dispositivo, la CPU potrebbe andare in stop e l'esecuzione del codice potrebbe interrompersi. Sulla maggior parte dei dispositivi questo può essere ovunque da 10 a 60 secondi dopo che lo schermo diventa nero.

È molto improbabile che l'addormentamento causi la morte della tua app.

1

Quello che ho visto nella mia applicazione è che viene chiamato solo il metodo onPause() dell'attività principale (category.LAUNCHER). Ciò è accaduto quando il telefono è andato a dormire e prima era stata avviata l'attività principale dell'applicazione.

Quando una delle altre attività era stata avviata prima che il telefono andasse a dormire, il primo onPause() viene chiamato then onStop() e alla fine onDestroy() - questo è per le attività di categoria.DEFAULT in il manifest.

Non so forse il problema è nel mio codice?

Problemi correlati