¿Cómo llamar a un método cuando una aplicación de Android se cierra o pierde el enfoque?
Debido a que una aplicación que estoy creando manejará datos bastante confidenciales, quiero sincronizar la base de datos SQLite con el servidor cada vez que el usuario inicie sesión, y eliminar la base de datos emty cada vez que la aplicación pierda el enfoque (porque el usuario se mueve a la pantalla de inicio o otra aplicación).
Viendoel ciclo de vida de la actividad, mi idea fue hacer esto vaciando la base de datos en el método de eliminación de todas las actividades. Para probar el ciclo de vida descrito, simplemente sobrescribo todos los métodos de ciclo de vida (onCreate, onStart, onResume, onPause, onStop y onDestroy), incluí algunos mensajes de registro en ellos y encendí mi aplicación.
Los mensajes de registro se incluyen en mi SettingsActivity. Cuando ingreso a mi aplicación y me muevo a la Configuración, se ejecuta en Crear, en Iniciar y en Reanudar (como se espera). Cuando hago clic en una configuración y me muevo a la siguiente pantalla, se ejecuta en Pausa y en Parar (aún como se esperaba). Para volver a la pantalla de configuración, hago clic en el botón Atrás y ejecuta onStart y onResume nuevamente (aún como se esperaba), cuando ahora hago clic nuevamente en el botón Atrás para regresar a la pantalla inicial, (para mi sorpresa) se ejecuta en Pausa, onStop AND onDestroy.
Así que mis preguntas;
¿Por qué destruye la actividad cuando la aplicación no está terminada?Y, lo que es más importante, ¿cómo puedo ejecutar mi método CleanUp cuando la aplicación se cierra o pierde el enfoque?