¿Qué hace exactamente el método Activity.finish()?

Resuelto Tal Kanel asked hace 54 años • 13 respuestas

Estoy desarrollando aplicaciones para Android por un tiempo y seguí muchas publicaciones sobre el ciclo de vida de la actividad y el ciclo de vida de la aplicación.

Sé que se realizan Activity.finish()llamadas a métodos en algún lugar del camino Activity.onDestroy()y también se elimina la actividad de la pila, y supongo que de alguna manera le indica al sistema operativo y al recolector de basura que puede "hacer su truco" y liberar la memoria cuando le parezca un buen momento para hacerlo. entonces....

Llegué a esta publicación: ¿ Salir de una aplicación está mal visto? y lea la respuesta de Mark Murphy.

Me confundió un poco acerca de qué finish()hace exactamente el método.

¿ Existe la posibilidad de que llame finish()y onDestroy()no me llamen?

Tal Kanel avatar Jan 01 '70 08:01 Tal Kanel
Aceptado

Al llamar a una actividad, se ejecuta finish()el método . onDestroy()Este método puede hacer cosas como:

  1. Descarte cualquier cuadro de diálogo que estuviera administrando la actividad.
  2. Cierre los cursores que estaba administrando la actividad.
  3. Cerrar cualquier cuadro de diálogo de búsqueda abierto

Además, onDestroy()no es un destructor. En realidad, no destruye el objeto. Es solo un método que se llama en función de un determinado estado. Por lo tanto, su instancia sigue viva y en muy buen estado* después de que la superclase onDestroy()se ejecuta y regresa. Android mantiene los procesos en caso de que el usuario quiera reiniciar la aplicación, esto hace que la fase de inicio sea más rápida. El proceso no hará nada y si es necesario recuperar memoria, el proceso finalizará.

K_Anas avatar Jun 02 '2012 14:06 K_Anas

Mis 2 centavos por la respuesta de @K_Anas. Realicé una prueba simple en el método Finish(). Métodos de devolución de llamada importantes enumerados en el ciclo de vida de la actividad

  1. Llamar a terminar() en onCreate(): onCreate() -> onDestroy()
  2. Llamar a terminar() en onStart(): onCreate() -> onStart() -> onStop() -> onDestroy()
  3. Llamar a terminar() en onResume(): onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()

Lo que quiero decir es que las contrapartes de los métodos junto con cualquier método intermedio se llaman cuando se ejecuta Finish().

p.ej:

 onCreate() counter part is onDestroy()
 onStart() counter part is onStop()
 onPause() counter part is onResume()
Prakash avatar Sep 10 '2015 17:09 Prakash