2012-04-30 14 views
6

Voglio sapere quando l'app è chiusa, perché ho bisogno di cancellare un database quando l'utente chiude l'app, proprio nel momento in cui l'utente chiude l'app è il momento giusto per cancellare lo SQLite Database, come posso rilevare questo?rileva quando l'applicazione viene chiusa

+2

** Leggi i documenti: ** http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle –

+3

Sì, lo so, ma la domanda è, ho bisogno di sapere quando il l'applicazione totale è chiusa, non quando un'attività è chiusa. – JLouis

+0

Quello che vuoi è impossibile. Il tuo processo potrebbe essere interrotto in qualsiasi momento, dall'utente o dal sistema operativo e non ti verrà notificato. – CommonsWare

risposta

7

Supponendo che non si sia finish() l'attività principale, cancellare il database all'interno del metodo onDestroy() di quella attività potrebbe essere il più vicino di ciò che si desidera realizzare. Come è stato indicato nei commenti, fare riferimento a http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle.

+0

onDestroy() non sembra funzionare a volte, Android salta semplicemente eseguendo il metodo onDestry(). – San

+2

L'uso di 'onPause()' è incoraggiato, dato che l'esecuzione di 'onDestroy()' non è affidabile al 100% (dipende dalle risorse di sistema) –

15

Questa è un'idea di progettazione imperfetta, che riflette un equivoco del sistema - quando il processo complessivo muore, è morto, il che significa che il tuo codice non è più in esecuzione.

si può fare qualche tracking e avere l'ultima onDestory() 'attività d fare la pulizia a titolo di cortesia, ma non date per scontato che sarà sempre effettivamente accadere (il metodo non è sempre chiamato). Se avere una copia obsoleta è un problema, puliscila alla prossima esecuzione.

Detto questo, è possibile provare a utilizzare il ndk per fornire un gestore per i segnali di terminazione del processo, ma comunque non ci conterei su di esso che funziona in tutti i casi. Il potenziale limitato di ottenere qualsiasi funzionalità audio da questo probabilmente non giustificherebbe lo sforzo a meno che non si abbia già familiarità con i concetti coinvolti.

E non fare per un minuto errore la pulizia di un meccanismo di sicurezza, poiché il file è lì mentre la tua app è in esecuzione, e rimarrebbe se la tua app terminasse in modo inaspettato.

+0

"Se la copia non aggiornata è un problema, puliscila alla prossima esecuzione." - grazie, buon suggerimento – Nactus

Problemi correlati