Android – ¿cómo startActivity o startActivityForResult afectará el flujo lógico de la actividad actual?

Tengo esta pregunta cuando estoy estudiando un proyecto de código abierto de Android.

Tengo una actividad A1 que llama a otra actividad A2 en su método "onCreate". Sin embargo, hay instrucciones de código antes y después del método "startActivity / startActivityForResult". No conozco la secuencia de ejecución en A1 después del método "startActivity / startActivityForResult".

El marco de código para A1 se muestra a continuación:

public void onCreate(Bundle bundle) { <code statements before> this.startActivityForResult(.....); // Start A2 here. <code statements after> } public void onResume() { <code statements> } protected void onActivityResult(int requestCode, int resultCode, Intent data) { <code statements> } ..... 

Me pregunto si A1 terminaría primero su ciclo de ejecución (es decir, "onCreate" -> "onStart" -> "onResume" -> "onPause" -> "onStop") antes de llamar a A2, o simplemente terminar "onCreate" antes Llamando A2, o tiene otra lógica de ejecución?

Por otra parte, cuando A2 se devuelve (finishes) y "onActivityResult" en A1 se llama, entonces A1 ejecuta "onRestart" -> "onStart" -> "onResume" después de ejecutar el método "onActivityResult"?

Debido a que A1 y A2 tienen su propia interfaz de usuario, creo que las 2 actividades no pueden ejecutarse simultáneamente con dos subprocesos diferentes. ¿Alguien sabe la secuencia de ejecución exacta en este caso?

Gracias de antemano por cualquier sugerencia.

No se ejecutarán en diferentes subprocesos, ambos estarán en el subproceso principal de la interfaz de usuario. No puede garantizar cuándo / si onResume () y onPause () serán llamados como se describe en los documentos del ciclo de vida de Android aquí .

Si está iniciando otra actividad en el onCreate () de una actividad, debería esperar que la interfaz de usuario de A1 no se cargue (la primera vez). Debe esperar verlo cuando A2 devuelve un resultado.

Aparte de eso, yo sugeriría sólo probarlo y ver por ti mismo.

He simulado esta situación utilizando 2 muy simples actividades de Android y obtuvo los resultados a continuación.

Los siguientes son lo que sucedería cuando Android ejecuta "startActivity" / "startActivityForResult" dentro de un método de una actividad A1 para iniciar otra actividad A2,

  1. Reconocería que ahora existe la intención de despedir otra actividad A2,
  2. Se ejecutaría al final del método actual (no saltaría directamente a la actividad A2 intencionada),
  3. Entonces llamaría el método "onPause" de la actividad A1 (para permitirnos guardar el estado actual) y luego dejar la actividad actual,
  4. Ahora iniciaría la actividad A2 y llamaría a su secuencia de método "onCreate" -> "onStart" -> "onResume"
  5. El método "onStop" de la actividad de llamada inicial A1 PUEDE ser llamado aquí si la actividad llamada A2 ha cubierto toda la pantalla,
  6. El método "onDestroy" de la actividad de llamada inicial A1 PUEDE llamarse aquí si la actividad llamada A2 es una actividad "singleTask" y A1 está encima de A2 en la pila (todas las actividades encima de una actividad "singleTask" serían destruidas Cuando la actividad "singleTask" se lleva al frente).

Lo escribo aquí esperando que pueda ser útil para otros.

  • Cómo llamar a startActivityForResult en la clase rubricado desde el diseño: main.xml
  • Cómo utilizar setContentView (int) de la clase que no se extiende Actividad
  • ¿Cómo se crean Fragmentos de preferencias y preferencias en Android?
  • Finaliza la actividad cuando se devuelve una respuesta del servidor, pero espera que termine la animación
  • ¿Cómo puedo iniciar la aplicación en la actividad principal?
  • Android: Ir al URL de HTTP en el botón de clic
  • ¿Qué método de actividad se llama cuando ocurren cambios de orientación?
  • Android ==> ¿Actividad secundaria?
  • Poner un Listener en la animación de transición entre actividades
  • ¿Cómo reinicio una actividad de Android?
  • Menú Ordenando las diferencias debido a la jerarquía Fragmento y Actividad. (OnCreateOptionsMenu)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.