Múltiples modos de inicio de actividad
1. Comprender el concepto de pila (contenedor para colocar instancias de Actividad)
1. Tarea (lista lineal)
Tarea, es decir, pila de tareas, se utiliza para El contenedor donde se colocan las instancias de actividad es el primero en entrar, el último en salir. Hay dos operaciones básicas: presionar y salir del montón, y las actividades almacenadas no admiten la reordenación. El orden de las actividades solo se puede cambiar según. en las operaciones de apilamiento y reventado. Si la actividad almacenada no admite el reordenamiento, el orden de las actividades solo se puede cambiar según las operaciones de apilado y apilado.
2. Al iniciar una aplicación, el sistema crea una tarea correspondiente de forma predeterminada para colocar la Actividad raíz
ps: Las actividades pueden iniciarse entre sí y la Actividad de la actual La aplicación puede ser Se inicia la actividad de otra aplicación (cámara), lo que significa que la función de pila puede hacerse cargo de la actividad de otra aplicación. Es decir, la funcionalidad de la pila puede agregar actividades de otras aplicaciones a su propia pila.
Por lo tanto, la Tarea puede entenderse como una pila responsable de administrar todas las instancias de Actividad utilizadas. Sin embargo, después de que Android5.0 llame a una actividad entre procesos, la actividad se colocará en una nueva pila.
II.Modo de inicio (el orden de las actividades solo se puede cambiar en función de las operaciones de pila y pop, por lo que el modo de inicio ingresa a la pila en qué postura)
A través de los atributos en el Archivo AndroidManifest andorid: launchMode se establece o se establece a través de la bandera en Intent
1.p> 1. Estándar
Modo predeterminado. En este modo, se crea una nueva instancia de forma predeterminada. Por lo tanto, en este modo, puede haber varias instancias idénticas y también se permiten varias pilas de la misma actividad. Escenarios de aplicación: la mayoría de las actividades.
2.singleTop (gesto de multiplexación superior de la pila en la pila) == FLAG_ACTIVITY_SINGLE_TOP
En el modo de multiplexación superior de la pila, si la actividad que se va a abrir ya existe en la tarea En la parte superior de la pila, no se crea una nueva instancia, sino que se crea llamando al método onNewIntent(). En su lugar, se llama al método onNewIntent(). Esto evita la duplicación de actividades en la parte superior de la pila. La escena hace clic en la notificación recibida en la barra de notificaciones y luego necesita iniciar una Actividad. En este momento, la Actividad puede usar singleTop; de lo contrario, creará una nueva Actividad cada vez que se haga clic en ella. Una rápida sucesión de clics en una escena inició dos actividades.
3.singleTask (modo de reutilización en la pila) == FLAG_ACTIVITY_CLEAR_TOP
En el modo de reutilización en la pila, la actividad tiene solo una instancia en la pila de tareas. Si la actividad que desea activar ya existe en la pila de tareas, en lugar de crear una nueva actividad, puede reutilizar la actividad existente, llamar al método onNewIntent() y borrar todas las actividades en la parte superior de la pila de actividades (volviendo a CLEAR_TOP). Escenario: página de inicio de la mayoría de las aplicaciones.
Para la mayoría de las aplicaciones, cuando hacemos clic en el botón Atrás en la interfaz principal, salimos de la aplicación, por lo que cuando ingresamos a la interfaz principal por primera vez, la interfaz principal está en la parte inferior de la pila, sin importar si la abrimos en el futuro Siempre que volvamos a la interfaz principal nuevamente, debemos usar el método de eliminar todas las actividades en la interfaz principal Actividad para que la interfaz principal Actividad esté en la parte superior de la pila en lugar de agregar una nueva instancia de la interfaz principal Actividad en la parte superior de la pila. De esta manera, se asegura de que todas las actividades se informen como destruidas cuando salga de la aplicación.
4. SingleInstance (no en la pila)
En el modo SingleInstance, solo hay una instancia de todo el sistema operativo móvil. Las diferentes aplicaciones que abren esta actividad comparten la misma actividad. Se ejecutarán en sus propias pilas de tareas independientes y solo existe una instancia de ellas en la pila de tareas. Escenario de aplicación: interfaz de llamada entrante. Hay relativamente pocos casos de uso para este patrón y puede usarse en lanzadores. O determina que necesita tener solo una instancia de la Actividad. Se recomienda precaución.
5.FLAG_ACTIVITY_NO_HISTORY
Actividad Utilice este modo para iniciar una Actividad. Cuando la Actividad inicia otra Actividad, la Actividad desaparecerá y no permanecerá en la pila de Actividades.
1. getTaskId(); Obtiene la pila donde se encuentra la actividad actual
2. La afinidad de las actividades en la misma aplicación es la misma (taskAffinity), es decir, cuando Cuando setFalg(Intent.FLAG_ ACTIVITY_NEW_TASK) es Actividadb, la intención de Actvitya es Actividadb, pero Actvitya y Actividadb siguen siendo una pila
Solo se creará una nueva tarea al saltar entre aplicaciones.
3. Para iniciar una actividad fuera del contexto de la actividad es necesario configurar FLAG_(Intent.ACTIVITY_NEW_TASK) en Intent.ACTIVITY_NEW_TASK. ACTIVITY_NEW_TASK; de lo contrario, se generará una excepción.
IV FLAG_ACTIVITY_CLEAR_TASK (debe usarse junto con FLAG_ACTIVITY_NEW_TASK)
Borra la pila de actividades excepto esta.