Terminar no detener la ejecución del código de actividad

He intentado el siguiente código

Log.d("t20", "First here"); startActivity(new Intent(this, AnotherActivity.class)); finish(); Log.d("t20", "Then Here"); 

Salida de registro:

 First here Then Here 

¿Por qué se imprime el segundo mensaje de registro? La ejecución debe detenerse en finsh() , ¿verdad?

No, terminar no es un aborto. La función continuará y cuando regrese al Looper dentro del framework Android que ejecuta el bucle de eventos comenzará la secuencia de desinitialización (llamando a OnPause, onStop y onDestroy).

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

  1. Descartar todos los diálogos que la actividad estaba administrando.
  2. Cierre todos los cursores que la actividad estaba administrando.
  3. Cerrar cualquier diálogo de búsqueda abierto
  4. Además, onDestroy () no es un destructor. En realidad no destruye el objeto. Es sólo un método que se llama basado en un determinado estado. Así que su instancia sigue viva y muy bien * después de que la superclase de onDestroy () se ejecuta y returns.Android mantiene los procesos en caso de que el usuario quiere reiniciar la aplicación, esto hace que la fase de inicio más rápido. El proceso no hará nada y si la memoria necesita ser recuperada, el proceso será matado

Después de llamar a finish() su actividad no se terminará de forma inmediata, sino que sólo se planificará como "finalizada". Por lo tanto, la ejecución del código continuará. Para comprobar si finish() fue llamado en una instancia de Activity puede invocar el método Activity.isFinishing() .

De los documentos:

 Check to see whether this activity is in the process of finishing, either because you called finish() on it or someone else has requested that it finished. 

Por lo tanto, su ejemplo de código se verá así:

 Log.d("t20", "First here"); startActivity(new Intent(this, AnotherActivity.class)); finish(); if (!isFinishing()) { Log.d("t20", "Then Here"); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.