Detalles del ciclo de vida del proceso Android

La actividad principal en mi aplicación a veces llama a startActivityForResult, esperando un resultado que le dirá (la actividad principal) qué información mostrar a continuación. En cuanto a la documentación para el ciclo de vida del proceso, parece que mientras la actividad de selección está activa, la actividad principal se considera una actividad de "fondo" y podría morir.

Entonces, ¿qué sucede cuando la actividad de selección se completa? Veo que mi actividad se volverá a crear y onCreate se llama con el paquete SaveInstance, pero ¿qué? ¿Se llama onActivityResult entonces como si mi actividad principal nunca hubiera salido y hubiera sido recreada?

Además, ¿hay alguna manera de forzar este comportamiento en un entorno de prueba, ya que de lo contrario debería ser una ocurrencia muy rara?

Sugerencia: declaraciones de registro

El estado de pausa descrito en documentos es:

Si una actividad ha perdido el foco pero sigue siendo visible (es decir, una actividad nueva o no transparente se centra en la parte superior de su actividad), se detiene. Una actividad en pausa está completamente viva (mantiene toda la información de estado y miembro y permanece conectada al administrador de ventanas), pero puede ser eliminada por el sistema en situaciones de memoria de muy baja intensidad.

Esto significa que, en circunstancias normales, su actividad principal sólo debe transferir el control a onActivityResult() cuando se completa la actividad de selección.

Sin embargo, los documentos también afirman que:

Una actividad de fondo ( actividad que no es visible para el usuario y que ha sido detenida ) ya no es crítica, por lo que el sistema puede matar con seguridad su proceso para recuperar la memoria de otros procesos en primer plano o visibles. Si su proceso necesita ser eliminado, cuando el usuario vuelve a la actividad (haciéndolo visible en la pantalla de nuevo), su onCreate(Bundle) se llamará con el savedInstanceState que había suministrado previamente en onSaveInstanceState(Bundle) para que Puede reiniciarse en el mismo estado en que el usuario la dejó por última vez.

En tales casos, la actividad principal se puede volver a dibujar.

Un punto importante a tener en cuenta es que los docs nunca han mencionado onActivityResult () como uno de sus métodos de ciclo de vida aquí

Por lo tanto, también podría ser el caso en el que el sistema android trata una actividad de startActivityforResult() y de padre (lea startActivityforResult() y onActivityResult() ) de la misma manera en que trata un diálogo de actividad como se indica aquí:

Una actividad visible (una actividad que es visible para el usuario pero no en primer plano, como una sentada detrás de un diálogo de primer plano) se considera extremadamente importante y no se matará a menos que sea necesario para mantener la actividad en primer plano en ejecución.

La respuesta es básicamente "sí": la actividad se recrea y el control fluye a través de onCreate (), onActivityResult (), onStart (), y así sucesivamente. Una actividad también se destruye si el usuario gira el dispositivo, por ejemplo, de vertical a horizontal, a menos que la aplicación no impida explícitamente este comportamiento. Así que simplemente gire el dispositivo (CTRL-F11 en el emulador) para probar.

Supongamos que hay dos actividades A y B y la Actividad A llama a la Actividad B a través de startOnActivityResult (intención, 200) entonces su Actividad pasa al fondo y la Actividad B se llama (onCreate, onStart, onResume) depende de lo que se ha anulado.

Cada vez que su actividad B llama a finish (), entonces su Actividad B se destruye y la Actividad A llega a primer plano. En este caso ahora es decir Actividad A la llamada será onActivityResult -> onStart -> onResume pero su onCreate no será llamado ya que sólo se llama cuando se llama a una determinada Actividad.

Supongamos que usted no ha llamado a finish () de la actividad B y ha llamado Actividad A a través de intento entonces solo se le llamará onCreate ().

También onActivityResult () es muy útil cuando desea retener el valor de sus hilanderos o desea notificydatasetchanged () su ListView de su primera actividad después del evento de la Tercera actividad. Sólo tiene que comprobar su resultCode de las Actividades en onActivityResult y realizar sus acciones

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