launchMode actividad, pila de reserva y afinidad

contorno

Vistazo a la fuente AOSP reciente proceso de inicio Actividad Actividad implica una gran cantidad de detalles del acuerdo, si no domina el Grupo, de afinidad conceptos del modelo, es fácil ver perdido en el código. Este artículo se destina especie Actividad modo de puesta en marcha y de las correspondientes representantes del significado modelo, seguir leyendo el código fuente de la fundación.

pila de tareas y rollback

Típicamente, cada aplicación que comprende una pluralidad de Actividad, que se colocan en una Actividad pila. Para mayor actividad de una aplicación abierta, es en la parte superior de la página de actividad se está mostrando, al hacer clic en el botón "atrás", la parte superior actual de la pila se hace estallar, y luego mostrar la nueva parte superior de la Actividad pila, ha sido Haga clic en "Volver" la pila de aplicación directa clave de todos los elementos son expulsados, el iniciador se mostrará la última página del escritorio o aplicación. El botón "atrás" para llamar al botón Atrás en Inglés, por lo que la pila se ha denominado Back-Pila, la traducción al chino de pila de reserva "pila de reserva" se llama un lenguaje natural, el nivel del sistema Android, dijo un repliegue pila es una tarea. Lo antedicho son generales, se puede establecer el modo de inicio de actividad o añadir banderas para mostrar la "-dos como" situación. Por ejemplo, una aplicación puede tener una pluralidad de tareas, Tarea contiene una pluralidad de aplicaciones, como la actividad. Aquí para hablar sobre el impacto de varias propiedades y varias tareas principales banderas para ver qué efecto hasta que son específicos.

propiedades relacionadas con la actividad

  • alwaysRetainTaskState: guardar todo el estado de la tarea, por defecto, si una tarea a largo plazo (por ejemplo, 30 minutos) en un estado invisible, el sistema será la tarea de todos los elementos que no son raíz vacías, lo que corresponde a las aplicaciones que retendrán única "casa". Después de esta propiedad se establece en true, el sistema no borrará los elementos de tarea. Tenga en cuenta que esta propiedad sólo está abierto en el papel del elemento raíz de la tarea (no necesariamente MainActivity).
  • clearTaskOnLaunch: Contrariamente alwaysRetainTaskState de lo anterior, cada clic en el icono se iniciará la tarea de limpiar el elemento no root, sólo el trabajo en el elemento raíz.
  • finishOnTaskLaunch: Esta propiedad es más interesante, su papel en la tarea elemento no root, como tarea tiene tres Actividad, ABC, C es el elemento superior, finishOnTaskLaunch propiedad B es verdadero, al hacer clic en el botón de inicio para ocultar esta tarea, entonces el escritorio? al hacer clic en el icono para mostrar tarea para esta aplicación, elementos de tarea de CA, B se elimina.
  • launchMode: Hay cuatro casos, standard, singleTop, singleTask, SingleInstance , en conjunción con la siguiente leyenda es diferente en cada modo de

launchMode

LaunchMode valor estándar de atributos por defecto, llamando de parte de cada llamada startActivity()se sumará una instancia de actividad en la tarea actual. Por ejemplo se añadió la Actividad-B de la figura a la tarea-1

recursos / lanzamiento-modelo-01

En las mismas circunstancias, los siguientes valores de atributos singleTop launchMode o singleTask, ocurre lo siguiente

recursos / lanzamiento-modelo-02

Antes y después de la tarea de descubrimiento no ha cambiado, Actividad-B no crea una nueva instancia, pero llama al onNewInstance()método. E indistinguibles desde el punto singTop singleTask, se puede distinguir de las dos condiciones siguientes para la misma tarea, como se muestra arriba, las llamadas startActivity()al añadir método Actividad-A, habrá un caso

recursos / lanzamiento-modelo-03

Como puede verse, si una instancia del elemento superior que se añade y diferente, el rendimiento singleTop no es diferente a la norma, pero pone singleTask Actividad en todas las instancias en la historia del pop, la instancia es en la parte superior para garantizar una tarea en sólo una instancia. En la siguiente imagen se puede ver singleTask se comportan de una tarea diferente en

recursos / lanzamiento-modelo-04

tarea-1 se muestra actualmente la tarea, la tarea-2 se retiró a la tarea de fondo, Actividad-X es singleTask, cuando la Actividad-B empieza Actividad-X, tarea-2 se moverá toda la pila? tarea-1 anterior, A continuación, pulse la tecla de retorno mostrará se mostrará la actividad de Y, Actividad-B cuando se hace clic en el botón de retorno de nuevo. Si sólo la pantalla Actividad-X por encima de la tarea-1 puede ser añadido FLAG_ACTIVITY_CLEAR_TASKpara identificar, por lo que África será la tarea elemento 2-objetivo claro.

La última SingleInstance modo más simple, es una instancia (Actividad) ocupa una tarea.

afinidad

En AndroidManifest.xml por taskAffinity puede establecer el <activity>"valor íntimo." Por defecto, la misma tarea (aplicación) en los valores íntimos de toda la actividad de la misma es la misma cadena - el nombre del paquete. Affnity valor puede ser proporcionado para completar algunos requisitos especiales. . .

Actividad tales como el uso de la aplicación actual (en adelante, la actividad de la fuente) la actividad se abre cuando la aplicación de destino (en adelante, la actividad de destino), el valor objetivo de la actividad launchMode singleTask, diferente aplicación actual y el nombre del paquete de aplicaciones de destino, la naturaleza diferente por defecto taskAffinity, esta vez de la fuente actividad actividad abierta objetivo sería saltar de una tarea a otra tarea, desde el punto de vista del rendimiento como para salir de la aplicación de la misma. Entonces se puede establecer el valor de origen Actividad taskAffinity, por lo que es el valor del objetivo Actividad taskAffinity similar, entonces no habría ninguna animación de salida aplicada cuando volvió a abrir. La razón es que cuando se abre Actividad singleTask o FLAG_ACTIVITY_NEW_TASK propiedad, determinará primero si existe una tarea (pila) y la actividad misma afinidad, si se añade esta actividad para esta tarea, si no se crea una nueva tarea. Habrá mostrar un efecto de transición salto entre la tarea móvil, tarea salto interno móvil transición efecto relativamente leve.

Otro efecto de la afinidad con allowTaskReparentingel uso de la propiedad compleja. Por ejemplo, hay dos aplicaciones, una aplicación de correo electrónico, la otra es una aplicación de navegador. Hay un enlace en el mensaje, haga clic en el navegador por procedimiento abierto, en circunstancias normales, haga clic en el navegador se abrirá una página de inicio del navegador. Si el mensaje de valor de atributo afinidad pertenece Actividad para el navegador nombre del paquete, y allowTaskReparenting espectáculos navegador propiedad pertenece el enlace Actividad es cierto, la próxima vez que haga clic el navegador para entrar, entonces, es abrir los enlaces en mensajes que se muestran la actividad. de la siguiente manera ilustrada

recursos / lanzamiento-modelo-05

referencia

  1. Tareas y comprender Volver Pila
  2. elemento de la actividad
Se han publicado 19 artículos originales · ganado elogios 0 · Vistas 5753

Supongo que te gusta

Origin blog.csdn.net/weixin_46221133/article/details/104172642
Recomendado
Clasificación