Cómo configurar el modo de inicio de actividad en Android
Cómo obtener un modo de inicio de actividad en Android
En Android, cada interfaz es una Actividad y la operación de cambio de interfaz es en realidad una operación de creación de instancias entre múltiples actividades diferentes. El modo de inicio de una Actividad en Android determina cómo se inicia y ejecuta la Actividad.
Hay cuatro modos de inicio para la Actividad total de Android:
Configuración del modo de inicio de la actividad:
Cuatro modos de inicio de Actividad:
1. Modo de inicio en modo Estándar
, la Actividad se creará cada vez que se active la Actividad. y colóquelo en la pila de tareas.
2. singleTop
Si hay una instancia de la Actividad en la parte superior de la pila de tareas, la instancia se reutilizará; de lo contrario, se creará una nueva instancia y se colocará en la parte superior de la pila (incluso si la instancia de Actividad ya existe en la pila, y la instancia se creará siempre que no esté en la parte superior de la pila).
3. singleTask
Si ya existe una instancia de la Actividad en la pila, la instancia se reutilizará (se llamará a onNewIntent() de la instancia). Cuando se reutiliza, la instancia volverá a la parte superior de la pila, por lo que las instancias superiores se eliminarán de la pila. Si la instancia no existe en la pila, se creará una nueva instancia y se colocará en la pila.
4. singleInstance
Cree la instancia de Actividad en una nueva pila y permita que varias aplicaciones compartan la instancia de Actividad en la pila. Una vez que existe una instancia de la Actividad modificada en una pila, cualquier aplicación que active la Actividad modificada reutilizará la instancia en la pila. El efecto es equivalente a que varias aplicaciones compartan una aplicación, sin importar quién active la Actividad en la misma aplicación.
Entre ellos, el estándar es el modo de inicio predeterminado del sistema.
Los siguientes ejemplos demuestran el mecanismo operativo del estándar:
1 TextView privado text_show
2 Botón privado btn_mode
3
4 @Override
5 public void onCreate(Bundle saveInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView( R.layout.activity_main);
8
9 text_show = (TextView) this.findViewById(R.id.text_show);
10
11 text_show.setText(this.toString());
12
13 btn_mode = (Botón) this.findViewById(R.id.btn_mode); p> p>
14
15 }
16
Evento de clic de botón
17 lanzamiento público vacío Estándar (Ver v) {
18 startActivity(new Intent(this,MainActivity.class));
19
20 text_show.setText(this.toString());
p>
21 } Cómo configurar el modo de inicio de la Actividad Hay cuatro modos de inicio de la Actividad: estándar: este es el modo predeterminado Cada vez que se activa la Actividad, se creará una instancia de Actividad. creado y colocado en la pila de tareas. singleTop: si hay una instancia de la Actividad en la parte superior de la pila de tareas, la instancia se reutilizará (se llamará a onNewIntent() de la instancia); de lo contrario, se creará y colocará una nueva instancia... ¿Qué? ¿Qué modo de inicio utiliza la actividad principal de Android? p>
En Android, hay 4 modos de inicio de actividad, a saber:
"estándar" (predeterminado)
" singleTop"
"singleTask"
"singleInstance"
1. Cómo determinar la tarea a la que pertenece
Las tareas de destino de las actividades de "estándar" y "singleTop", y el remitente del intent recibido está dentro de la misma tarea, a menos que el intent incluya el parámetro FLAG_ACTIVITY_NEW_TASK.
Si se proporciona el parámetro FLAG_ACTIVITY_NEW_TASK, se iniciará en otra tarea.
2. Si se permiten múltiples instancias
"estándar" y "singleTop" pueden tener instancias múltiples y existir en diferentes tareas, y una tarea puede incluir una actividad Múltiples instancias <; /p>
"singleTask" y "singleInstance" limitan la generación de una sola instancia, que es el elemento raíz de la tarea.
singleTop requiere que si ya hay una instancia de la Actividad que se creará en la parte superior de la pila cuando se crea la intención, la intención se enviará a esa instancia en lugar de a la nueva instancia.
3. Si se permite que existan otras actividades en esta tarea
"singleInstance" ocupa una tarea exclusivamente y otras actividades no pueden existir en esa tarea si inicia una nueva actividad; independientemente del modo de inicio de la nueva actividad, la nueva actividad se ejecutará en otras tareas (como si se hubiera agregado el parámetro FLAG_ACTIVITY_NEW_TASK).
Los otros tres modos se pueden guardar con otras actividades.
4. Si se genera una nueva instancia cada vez
"estándar" generará una nueva instancia de actividad para cada intención de inicio
"singleTop" Si; la actividad está en la parte superior de la pila de tareas, no se generará una nueva instancia de la actividad y la instancia en la parte superior de la pila se utilizará directamente. De lo contrario, se generará una instancia de la actividad.
Por ejemplo, los elementos de la pila de tareas son A-B-C-D (D está en la parte superior de la pila. En este momento, se envía una intención de inicio a D. Si D es "estándar", se crea una nueva instancia de). Se genera D y la pila se convierte en A. -B-C-D-D.
Si D es singleTop, no se producirá ninguna nueva instancia de D y el estado de la pila seguirá siendo A-B-C-D
Si se envía un Intent a B en este momento, sin importar el estado de B el modo de lanzamiento es "estándar" o "singleTop", se generará una nueva instancia de B y el estado de la pila cambiará a A-B-C-D-B.
"singleInstance" es la única actividad en su pila y se reutilizará cada vez.
Si "singleTask" está en la parte superior de la pila, se acepta la intención. De lo contrario, la intención se descartará, pero la tarea aún volverá al primer plano.
Cuando una instancia de actividad existente maneja una nueva intención, se llamará al método onNewIntent().
Si se recibe una intención para generar una instancia de actividad, el usuario puede regresar a la página anterior presionando la tecla Atrás. Un estado; si ya existe una actividad para manejar la intención, el usuario no puede regresar al estado anterior presionando la tecla Atrás.
El resumen es el siguiente:
el estándar se creará cada vez, cada Tarea puede tenerlo y cada Tarea puede tener múltiples instancias (cada Tarea puede tenerlo y puede Hay varios)
singleTop Si la instancia actual está en la parte superior de la pila, no se creará ninguna instancia nueva y se llamará a su OnNewIntent. Si no está en la parte superior de la pila, cree una nueva instancia (cada Tarea puede tener más de una y puede reutilizarse cuando esté en la parte superior de la pila)
singleTask crea una nueva Tarea , si ya hay otras Tareas y contiene una instancia, llame a esa instancia de Tarea directamente. (Solo existirá una tarea)
singleInstance crea una nueva tarea y solo hay una instancia de ella en la tarea.
(Solo existirá una Tarea, y es la única en la Tarea)
FLAG_ACTIVITY_NEW_TASK es similar a singleTask
FLAG_ACTIVITY_SINGLE_TOP es similar a singleTop
FLAG_ACTIVITY_CLEAR_TOP tiene no hay desarrollo de Android correspondiente y es el modo predeterminado para la actividad. El modo de inicio es el modo de inicio estándar. ¿Cuándo se utilizan otros modos de inicio?
El modo de inicio es simplemente la estrategia cuando se inicia la Actividad. Se establece en el atributo android:launchMode de la etiqueta en AndroidManifest.xml.
Hay 4 modos de inicio; a saber, estándar, singleTop, singleTask, singleInstance;
Antes de explicar el modo de inicio, es necesario comprender el concepto de "pila de tareas";
Uno:
Modo estándar: esto No hay nada que decir. El modo de inicio de actividad predeterminado de Android es estándar. Si hay tres actividades, Act1, Act2 y Act3, si comienza desde Act1 a Act2 y luego a Act3, entonces la tarea de Android. La pila será diferente. Act1, Act2, Act3 y Act3 están en la parte superior de la pila. Si presiona la tecla de retorno en el teléfono en este momento, deberá regresar 3 veces para regresar al escritorio (suponiendo que así sea). es una demostración iniciada desde el escritorio). La distribución de la pila de tareas destruye Act3, Act2 y finalmente Act1.
2: modo singleTop:
Resultados experimentales:
modo singleTop: este modo de inicio es similar al modo estándar y la asignación de la pila de tareas también es muy similar, como por ejemplo: Los actos 1 y 2 existentes están configurados con android:launchMode="singleTop" en el archivo de manifiesto act2. Otros están en el modo estándar predeterminado si la demostración experimental se inicia desde el escritorio, desde el acto 1 al acto 2. , entonces la pila de tareas se asigna como act1, act2. En este momento, la asignación de la pila de tareas es exactamente la misma que la de la pila de tareas en modo estándar. Las diferencias se explicarán a continuación. Si act1 se inicia en la interfaz act2. El estado de la pila de tareas en este momento será act1, act2, act1. Después de comenzar de act1 a act2 y luego a act2, la pila de tareas (en la interfaz act2) será: act1, act2, act1, act2. la parte superior de la pila no se volverá a crear, pero se repetirá. Utilice act2 como Activit, y así sucesivamente.
Conocimiento teórico:
singleTop, si el elemento superior de la pila de tareas es un componente a activar, no se creará ni colocará una nueva Actividad en la pila de tareas, sino la La pila se reutilizará. Si se encuentra que el elemento en la parte superior de la pila no es la Actividad a activar, se creará una nueva Actividad y se colocará en la pila de tareas
Escenario de aplicación del modo SingleTop:
En el programa App (o en el navegador) marcadores guardados, si el usuario ve una interfaz para guardar sus etiquetas favoritas, si quiere guardar 10, cuando el usuario presione el botón regresar, regresará 10 veces antes de regresar a La aplicación SingleTop en Android resuelve este problema.
Tres modos singleTask:
Los resultados experimentales no son muy diferentes, por lo que no entraré en detalles sobre el contenido experimental. Puedes escribir una pequeña demostración, dos actividades y. cada actividad tiene dos botones, pueden comenzar a registrarse entre sí para verificarlo manualmente y tendrán una comprensión más profunda. Puede consultar el modo SingleTop para experimentar. La siguiente es solo una explicación de la diferencia con SingleTop. p>
La diferencia es la siguiente: (conocimiento teórico)
El modo de operación SingleTask es generalmente similar al modo de operación singleTop. Si encuentra que ya hay una Actividad para iniciar en la pila de tareas, borrará todas las actividades en la pila de tareas donde se encuentra la Actividad y luego reutilizará directamente la Actividad existente.
Escenario de aplicación:
Si hay una función en una aplicación que necesita cargar el contenido de la página web y abrir una actividad del navegador para cargar el contenido de la página web, la sobrecarga de memoria será muy grande. La incrustación de Webkit/c++ debe inicializarse primero. La actividad del navegador del núcleo del navegador se configura con singleTask y el uso de este modo puede ahorrar sobrecarga de memoria.
Cuatro: modo de instancia única:
Conocimiento teórico directo:
El modo de operación de instancia única abrirá una nueva pila de tareas, que no es la misma tarea que otras tareas ordinarias. actividades.La pila es bastante impresionante. Su proceso de patrón es abrir primero una nueva pila de tareas y colocar la actividad que se activará en la nueva pila de tareas. Solo hay una instancia en esta pila de tareas, lo cual también es bastante extremo. que ver con sus escenarios de aplicación
Escenarios de aplicación:
Aplicación de varios diccionarios, como el Diccionario Xiang Youdao y el Diccionario Jinshan. en la misma categoría en la pila de tareas, es una aplicación de programa del sistema global para lograr el propósito de ahorrar memoria. Cómo configurar el modo de arranque uefi en el sistema win7
El disco de arranque u boot uefi u. que contiene la versión fantasma del archivo de imagen iso del sistema win7 Conéctelo a la interfaz u *** de la computadora, luego reinicie la computadora Cuando aparezca la pantalla de inicio, use la tecla de acceso directo de arranque USB con un solo clic para ingresar a la selección de elementos de inicio. ventana y luego mueva el cursor al elemento que comienza con UEFI: (nota: debe Para seleccionar este elemento), presione la tecla Enter para ejecutar y espere para ingresar al sistema u-start win pe. La herramienta de instalación u-start se ejecutará automáticamente. Abra y cargue el programa de instalación del sistema win7 preparado en el disco de inicio del disco u-start uefi u. Haga clic para seleccionar la unidad c. Instale el disco para el sistema y luego haga clic en el botón "Aceptar" para continuar.
Luego espere pacientemente hasta que win7 se complete la liberación del sistema y la computadora se reiniciará automáticamente. p>
Después de que la computadora se reinicie, el sistema completará la instalación y aplicación del programa posterior hasta que se ingrese al escritorio del sistema win7 Preguntas sobre singleTop en el modo de inicio de la actividad de desarrollo de Android
Esta teoría del póster. Parece un poco inexacto. "Después de que D completó la operación, inicié el navegador E integrado en el sistema. Según el SDK, el navegador E se asignó a una nueva tarea. Entonces ahora hay dos tareas". ¿Por qué está seguro de que el navegador E se ha puesto en una nueva Tarea? ¿Está el indicador configurado en el Intent que inicia el navegador E? Preguntas sobre singleTop en el modo de inicio de la actividad de desarrollo de intentadroid actividad android-Android Modo de inicio. Los novatos preguntan, ¿dónde está el héroe?
Hay cuatro modos de inicio de Actividad: estándar: este es el modo predeterminado Cada vez que se activa la Actividad, se creará una instancia de Actividad y se colocará en ella. pila de tareas.
singleTop: si hay una instancia de la Actividad en la parte superior de la pila de tareas, la instancia se reutilizará (se llamará a onNewIntent() de la instancia); de lo contrario, se creará una nueva instancia y colocado en la parte superior de la pila, incluso si Ya existe una instancia de esta Actividad en la pila, siempre que no esté en la parte superior de la pila, se creará una nueva instancia.
singleTask: si ya existe una instancia de la Actividad en la pila, la instancia se reutilizará (se llamará a onNewIntent() de la instancia). Cuando se reutiliza, la instancia volverá a la parte superior de la pila, por lo que las instancias superiores se eliminarán de la pila. Si la instancia no existe en la pila, se creará una nueva instancia y se colocará en la pila.
singleInstance: crea una instancia de Actividad en una nueva pila y permite que varias aplicaciones compartan la instancia de Actividad en la pila. Una vez que ya existe una instancia de Actividad de este modo en una pila, cualquier aplicación que active la Actividad reutilizará la instancia en la pila (se llamará a onNewIntent() de la instancia). El efecto es equivalente a que varias aplicaciones compartan una aplicación. No importa quién active la Actividad, ingresarán a la misma aplicación.
La ubicación es el atributo android:launchMode del elemento Actividad en el archivo AndroidManifest.xml.
No sé qué quieres preguntar, déjame responder a tu pregunta ¿Cuáles son los modos de actividad de inicio?
Hay cuatro modos de inicio de Actividad: estándar: Este. es el modo predeterminado y se activará cada vez que se active la Actividad. Cree una instancia de Actividad y colóquela en la pila de tareas.
singleTop: si hay una instancia de la Actividad en la parte superior de la pila de tareas, la instancia se reutilizará (se llamará a onNewIntent() de la instancia); de lo contrario, se creará una nueva instancia y colocado en la parte superior de la pila, incluso si Ya existe una instancia de esta Actividad en la pila, siempre que no esté en la parte superior de la pila, se creará una nueva instancia.
singleTask: si ya existe una instancia de la Actividad en la pila, la instancia se reutilizará (se llamará a onNewIntent() de la instancia). Cuando se reutiliza, la instancia volverá a la parte superior de la pila, por lo que las instancias superiores se eliminarán de la pila. Si la instancia no existe en la pila, se creará una nueva instancia y se colocará en la pila.
singleInstance: crea una instancia de Actividad en una nueva pila y permite que varias aplicaciones compartan la instancia de Actividad en la pila. Una vez que ya existe una instancia de Actividad de este modo en una pila, cualquier aplicación que active la Actividad reutilizará la instancia en la pila (se llamará a onNewIntent() de la instancia). El efecto es equivalente a que varias aplicaciones compartan una aplicación. No importa quién active la Actividad, ingresarán a la misma aplicación.
La ubicación es el atributo android:launchMode del elemento Actividad en el archivo AndroidManifest.xml.