titulo studio poner agregar activity java android

java - studio - ¿Cómo funciona Activity.finish() en Android?



android set title activity (4)

¿Sale inmediatamente o completa la función desde la que se llamó?

El método que llamó finish() se ejecutará hasta su finalización. La operación finish() ni siquiera comenzará hasta que devuelva el control a Android.

¿Podría alguien proporcionar una descripción de lo que ocurre cuando una Activity llama a su método finish() ?

¿Sale inmediatamente, o completa la función desde la que se llamó?


Si hay dos actividades A y B. Y su flujo va de A> B; y B = A llama a finish() .

Entonces,

El método desde el que llamó a finish() se ejecutará como mencionó Mark. Y el flujo de devoluciones de llamadas será el siguiente:

  1. onPause() de activity A
  2. onRestart() > onStart() > onResume() de la Actividad B
  3. Entonces, viene la verdadera diferencia. Si no llamó a finish() de la activity A ; solo onStop() de la Activity A se llamará aquí. Mientras que, en este caso, donde llamamos finish() de la Activity A ; Entonces se onStop() y onDestroy() para la activity A

Todos los eventos de ciclo de vida como onCreate , onResume , onPause ... onDestroy de una actividad siempre se onDestroy en un único hilo: el "hilo principal".

En resumen, este hilo está respaldado por una Cola en la que se publican todos los eventos de actividad. Este hilo puede ejecutar todos estos eventos en el orden de inserción.

Si está llamando a finish() en una de las devoluciones de llamada de ciclo de vida como onCreate() ... un mensaje de "finalización" se agregará a esta cola pero el hilo no puede seleccionar y ejecutar la acción "finalizar" hasta que se ejecute el método devuelve es decir, el hilo se libera de la tarea actual.


ondestroy() es la última llamada que recibes antes de que se destruya tu actividad.

Esto puede ocurrir ya sea porque la actividad está terminando (alguien llamado finish() en ella o porque el sistema está destruyendo temporalmente esta instancia de la actividad para ahorrar espacio. Puede distinguir entre estos dos escenarios con el método isFinishing() .