Setting launchMode = "singleTask" contra la actividad de configuración launchMode = "singleTop"

Tengo una aplicación que es muy jerárquica (las actividades son similares a la Liga> Equipo> Posición> Jugador) y por lo que he hecho cada actividad singleTop con el fin de mantener la navegación sensible y evitar instancias duplicadas.

Ahora estoy haciendo mi segunda aplicación y he visto que se sugiere para declarar mi aplicación para ser singleTask para evitar duplicar instancias. ¿Podría alguien explicar las ventajas de cada enfoque?

Mi nueva aplicación es sólo una actividad con 3 fragmentos y luego probablemente añadir una actividad de configuración y tal vez un FAQ.

EDIT: Acabo de singleTask cuenta de que singleTask NO está impidiendo instancias duplicadas de mi aplicación, como había pensado. Ahora buscando la manera correcta de manejar esto …

Creo que su definición de singleTop y singleTask es un poco apagado. SingleTop podría producir una instancia duplicada. Vamos a usar su ejemplo, Liga> Equipo> Posición> Jugador. Si hay un botón en la pantalla del jugador que te llevará a la pantalla de la liga, se convertirá en Liga> Equipo> Posición> Jugador> Liga.

Mientras que singleTask garantiza que sólo puede existir una instancia de la actividad.

Modo de lanzamiento de la actividad de Android

4 modos …

"Standard" "singleTop" "singleTask" "singleInstance"

El modo predeterminado es "estándar".

Los modos se dividen en dos grupos. Estándar y singleTop viene en un lado y singleTask y singleInstance viene en otro lado.

La diferencia principal entre estándar y singleTop es en estándar, cada vez que una nueva intención para la actividad estándar, se crea una nueva instancia. En caso de singleTop también, se crea una nueva instancia pero una instancia de la actividad ya está en la parte superior de la pila, no se creará una nueva instancia.

En realidad, el problema viene, cuando descargamos una aplicación de un servidor y lo lanzamos y lo abrimos desde allí mismo. Después de iniciar la aplicación, presione el botón de inicio. A continuación, haga clic en todos los programas y seleccione el icono de la aplicación desde la pantalla de inicio. Entonces se creará otra actividad en el caso del estándar, pero en singleTop, no se creará ninguna nueva instancia.

Los modos "singleTask" y "singleInstance" también difieren entre sí en un solo aspecto: Una actividad de "singleTask" permite que otras actividades formen parte de su tarea. Está en la raíz de la pila de actividades, pero otras actividades (necesariamente actividades "estándar" y "singleTop") se pueden iniciar en la misma tarea. Por otra parte, una actividad de "singleInstance" no permite que ninguna otra actividad sea parte de su tarea. Es la única actividad en la tarea. Si inicia otra actividad, esa actividad se asigna a una tarea diferente, como si FLAG_ACTIVITY_NEW_TASK estuviera en la intención.

http://smartandroidians.blogspot.in/2010/04/activity-launch-mode-in-android.html

He encontrado la respuesta aquí: http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

"SingleTop":

La diferencia con 'estándar' es, si una instancia de actividad ya existe en la parte superior de la tarea actual y el sistema enruta la intención de esta actividad, no se creará ninguna nueva instancia porque disparará un método onNewIntent () en lugar de crear una Nuevo objeto. Tomemos la integración de Twitter-oauth como ejemplo.

"SingleTask":

Siempre se creará una nueva tarea y se enviará una nueva instancia a la tarea como la raíz. Sin embargo, si existe alguna instancia de actividad en cualquier tarea, el sistema direcciona la intención a esa instancia de actividad a través de la llamada al método onNewIntent (). En este modo, las instancias de actividad se pueden enviar a la misma tarea. Y si el usuario hace clic en la tecla BACK de la actividad singleTask, el sistema devolverá al usuario a la actividad anterior.

Desde el modo de puesta en marcha de Understanding Activity :

Estándar (predeterminado): – Se pueden instanciar varias instancias de la clase de actividad y se pueden agregar varias instancias a la misma tarea o tareas diferentes. Este es el modo común para la mayoría de las actividades.

SingleTop: – La diferencia con el estándar es, si una instancia de la actividad ya existe en la parte superior de la tarea actual y el sistema orienta la intención a esta actividad, no se creará ninguna nueva instancia porque disparará un método onNewIntent () En lugar de crear un nuevo objeto.

SingleTask: – Siempre se creará una nueva tarea y se enviará una nueva instancia a la tarea como raíz. Sin embargo, si existe alguna instancia de actividad en cualquier tarea, el sistema direcciona la intención a esa instancia de actividad a través de la llamada al método onNewIntent (). En este modo, las instancias de actividad se pueden enviar a la misma tarea. Este modo es útil para las actividades que actúan como puntos de entrada.

SingleInstance: – Igual que singleTask, excepto que la instancia no activity puede ser empujada a la misma tarea de singleInstance. Por consiguiente, la actividad con el modo de inicio está siempre en una sola tarea de instancia de actividad. Este es un modo muy especializado y sólo se debe utilizar en aplicaciones que se implementan enteramente como una actividad.

  • Propósito de navegación que funcionaría con mapas y waze
  • Appcompatv7 - v21 El cajón de navegación no muestra el icono de hamburguesa
  • Pestañas intercambiables en el fragmento Menú Deslizante
  • Android Diseño de materiales Navegación Vista -> Elemento
  • ¿Cómo organizar una aplicación utilizando fragmentos?
  • ¿Debo especificar el nombre de la actividad principal en el manifiesto de Android?
  • Android - Fragmentos del cajón de navegación
  • Cómo implementar android Barra de herramientas Botón Atrás
  • Cómo obtener el ID de submenú en la vista de navegación
  • ¿Cómo agrego el cajón de navegación a mi código existente?
  • Cómo combinar el cajón de navegación y Spinner
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.