El método onDestroy () de la actividad no se llama después de eliminar la actividad del fondo pasando

He implementado ActivityLifecycleCallbacks en una clase privada dentro de mi clase de Application .

Si se utiliza el botón Inicio o el botón Atrás, se onStop() los onStop() y onPause() del ciclo de vida. Si yo mato la actividad al pasar de fondo, el método onDestroy() no se llama. Se llama cuando empiezo mi actividad la próxima vez. Estoy usando moveTaskToBack(true) en el caso de Back press.

¿Cuál debe ser la cuestión y qué método de ciclo de vida debe llamarse cuando se pasa de fondo?

De la documentación de onDestroy() :

Nota: ¡no cuente con que este método sea llamado como un lugar para guardar datos! Por ejemplo, si una actividad está editando datos en un proveedor de contenido, éstos deben ser confirmados en onPause () o onSaveInstanceState (Bundle), no aquí. Este método se implementa generalmente para liberar recursos como los subprocesos que están asociados con una actividad, de modo que una actividad destruida no deja esas cosas mientras el resto de su aplicación sigue funcionando. Hay situaciones en las que el sistema simplemente matará el proceso de alojamiento de la actividad sin llamar a este método (o cualquier otro) en él, por lo que no debe usarse para hacer las cosas que están destinadas a permanecer alrededor después de que el proceso desaparezca.

Tal situación es eliminar la aplicación de la lista de tareas recientes.

Echa un vistazo a esta respuesta sobre cómo recibir una notificación cuando la aplicación se está eliminando de Recientes.

Recuerdo haber leído una pregunta similar sobre StackOverflow. Aquí estaba la respuesta principal:

Manejar la aplicación de salida de Task Manager Manejar la aplicación de salida desde el Administrador de tareas

Lamentablemente no hay una buena respuesta para manejar esta situación. Si la aplicación es forzada, no se llama necesariamente el método onDestroy. De acuerdo con la documentación.

Nota: ¡no cuente con que este método sea llamado como un lugar para guardar datos! Por ejemplo, si una actividad está editando datos en un proveedor de contenido, éstos deben ser confirmados en onPause () o onSaveInstanceState (Bundle), no aquí.

Si puede, limpie en el método onPause (). Para que el usuario pueda llegar a esa pantalla para matar la aplicación, tiene que haber sido de fondo y por lo tanto onPause () sería llamado. (véase la documentación)

borrar la aplicación desde el fondo, es decir, el borrado de los retrocesos hace que todo el proceso y la tarea sean eliminados y que no se pueda llamar a la función onDestroy() cuando el usuario presiona de una actividad.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.