2012-04-30 20 views
6

Quiero saber cuándo se cierra la aplicación, porque necesito borrar una base de datos cuando el usuario cierra la aplicación, justo en el momento en que el usuario cierra la aplicación es el momento adecuado para borrar el SQLite Base de datos, ¿cómo puedo detectar esto?detectar cuando la aplicación está cerrada

+2

** Lea los documentos: ** http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle –

+3

Sí, lo sé, pero la pregunta es, necesito saber cuándo la aplicación total está cerrada, no cuando se cierra una actividad. – JLouis

+0

Lo que quieres es imposible. Su proceso puede ser cancelado en cualquier momento por el usuario o el sistema operativo, y no se le notificará sobre esto. – CommonsWare

Respuesta

7

Supongamos que su actividad principal no es finish(), borrar su base de datos dentro del método onDestroy() de esa actividad puede ser lo más cercano a lo que desea lograr. Como se ha señalado en los comentarios, consulte http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle.

+0

onDestroy() no parece funcionar a veces, android simplemente se salta la ejecución del método onDestry(). – San

+2

Se recomienda utilizar 'onPause()', ya que la ejecución 'onDestroy()' no es 100% confiable (depende de los recursos del sistema) –

15

Esta es una idea de diseño defectuosa, que refleja un malentendido del sistema: cuando el proceso en general muere, está muerto, lo que significa que su código ya no se está ejecutando.

Usted puede hacer algo de seguimiento y tener la última onDestory() 'd actividad de hacer la limpieza como una cortesía, pero no suponga que va a suceder en realidad siempre (el método no es siempre llama). Si tener una copia obsoleta es un problema, límpiala en la próxima ejecución.

Dicho esto, puede intentar usar el ndk para proporcionar un controlador para las señales de terminación del proceso, pero aún así no contaría con que funcione en todos los casos. El potencial limitado para obtener cualquier funcionalidad de sonido de esto probablemente no justifique el esfuerzo a menos que ya esté familiarizado con los conceptos involucrados.

Y no se equivoque ni un minuto al limpiar un mecanismo de seguridad, ya que el archivo está allí mientras se ejecuta su aplicación, y se mantendría si su aplicación terminara de manera inesperada.

+0

"Si tener una copia obsoleta es un problema, límpiela en la siguiente ejecución." Gracias, buena sugerencia – Nactus

Cuestiones relacionadas