SingleTask launchMode en android no funciona
Así, tengo 4 actividades Actividad Activity1
, Activity2
, Activity3
y Activity4
. Comienzo de Activity1
entonces en algún acontecimiento comienzo Activity2
entonces en un cierto acontecimiento en Activity2
comienzo Activity3
como una nueva tarea como
public void onClick(View v) { Intent intent = new Intent(Activity2.this, Activity3.class); intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }
Aquí Activity2
launchMode es decalared como singleTask.
- Cómo combinar el cajón de navegación y Spinner
- 2 ViewPager no se desplaza en Android 2.3
- Cómo obtener el ID de submenú en la vista de navegación
- Setting launchMode = "singleTask" contra la actividad de configuración launchMode = "singleTop"
- Calcular la velocidad de una aplicación de navegación sin el método getSpeed ()
Luego navego de Activity3
a Activity4
Cuando comienzo Activity2
de Activity4
creo que debe tener backstack como
Tarea A
Actividad2 |
| Actividad1 |
Tarea B
Actividad4 |
Actividad3 |
Como se muestra en la imagen de abajo
Pero en su lugar nueva instancia de Activity2
se agrega a la tarea actual como
Tarea B
Actividad2 |
Actividad4 |
Actividad3 |
Tarea A
Actividad2 |
| Actividad1 |
Alguien puede ayudarme a entender esto?
- ¿Cómo detectar si el cajón de navegación está abierto?
- ¿Debo especificar el nombre de la actividad principal en el manifiesto de Android?
- Appcompatv7 - v21 El cajón de navegación no muestra el icono de hamburguesa
- ¿Cómo agrego el cajón de navegación a mi código existente?
- Android Navigation Drawer implementado con Actividades
- Android - Navegación desde la actividad hasta el fragmento
- NavigationDrawer con Actividades vs. NavigationDrawer con Fragments
- Cómo reanudar la actividad en lugar de reiniciar al ir "arriba" de la barra de acción
Android no creará una nueva tarea a menos que la taskAffinity
de la Activity
que está intentando iniciar sea diferente de la taskAffinity
de la tarea actual. taskAffinity
toma precendencia sobre cualquier otra cosa.
Si realmente desea iniciar una tarea separada, tendrá que ajustar la taskAffinity
de taskAffinity
de Activity3
siguiente manera:
<activity android:name=".Activity3" android:taskAffinity=""/>
Además, aunque Activity4
se declara con launchMode="singleTask"
, Android no creará una nueva tarea para ella a menos que tenga una taskAffinity
diferente de las otras actividades.
Tenga en cuenta que la creación de varias tareas para la misma aplicación tiene muchos efectos secundarios. Debe proporcionar un icono uniqyue y una etiqueta única para la Activity
raíz en cada tarea, de lo contrario el usuario se confundirá cuando quiera volver a su aplicación (no podrá determinar cuál de las varias tareas es la correcta ). También, puede ocurrir taskReparenting
que inesperadamente moverá las actividades de una tarea a otra. Todo esto es algo muy complejo y la mayoría de los desarrolladores no lo comprenden completamente y por lo tanto lo hacen mal.
Además, el uso de FLAG_ACTIVITY_MULTIPLE_TASK
es ciertamente incorrecto. El único tipo de aplicación que necesita utilizar esto es un lanzador. Si inicia varias tareas con la misma Activity
en ella, nunca podrá volver a una determinada programaticamente y confundirá totalmente a su usuario. Esto definitivamente no es lo que quieres.
En la mayoría de los casos no es necesario realizar varias tareas, generalmente causa más problemas de los que resuelve. Explique por qué cree que necesita varias tareas.
- GetLine1Number () no funciona
- Servicio externo de Android desde una biblioteca (AAR, no Shared Service)