¿El botón de retroceso de Android llama a ondestroy?

Cuando se pulsa el botón de retroceso y se está activando la actividad actual, ¿se llamará el ondestroy? Parece que no me está llamando

Parece que onStop se llamará. OnPause se llamará también en bloqueo de pantalla o llamadas entrantes y etc …

Parece que la forma correcta de manejar actividad pop será onstop ()

Depende. Si el sistema no está muy limitado en este momento y / o su Actividad no está ocupando un montón de memoria, probablemente se llamará onStop() . Esto permite que su actividad permanezca en la memoria y regrese muy rápidamente cuando el usuario vuelve a ella. Más adelante, si el usuario no ha utilizado su actividad durante un tiempo y el sistema necesita liberar algo de memoria, se onDestroy() .

Dicho esto, si el sistema está muy restringido por la memoria o Actividad estaba utilizando una tonelada de memoria, onDestroy() podría ser llamado tan pronto como presione el botón de regreso y volver a casa.

Para más información sobre el ciclo de vida de la actividad, lea la documentación aquí .

Echa un vistazo a esta discusión en stackoverflow, responde a la pregunta onDestroy bastante bien, sobre cuándo se llama.

Actividad OnDestroy nunca llamado?

Debe poner su código en onPause y onStop, y también onSaveInstanceState / onRestoreInstanceState.

Utilice onDestroy para objetos que necesitan ser limpiados y establecidos en null. Los procesos de gestión de memoria y recolección de basura destruirán periódicamente los procesos de fondo, llamando a OnDestroy.

Sin embargo, para asegurarse de que su aplicación libera memoria reservada, tenga cuidado de limpiar manualmente sus objetos cuando ya no sean necesarios.

Había mencionado anteriormente algunos consejos sobre el uso de system.gc para forzar onDestroy a ser llamado.

Sin embargo, no se puede confiar en system.gc para forzar onDestroy a que se llame, y un desarrollador no debe confiar en onDestroy siendo llamado para limpiar los objetos de asignación de memoria.

Por lo tanto, he editado mi respuesta, y eliminado las referencias a system.gc.

El artículo mencionado en el comentario de cdeange es un buen artículo sobre por qué es una mala práctica confiar en llamar a system.gc. https://stackoverflow.com/a/2414120/323696

De desarrolladores de Android :

Existen algunos escenarios en los que tu actividad se destruye debido al comportamiento normal de la aplicación, como cuando el usuario presiona el botón Atrás o tu actividad marca su propia destrucción llamando a finish ().

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