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.

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 Introduzca aquí la descripción de la imagen

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?

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.

  • Bloquear / deshabilitar el botón de aplicaciones recientes
  • Cómo implementar android Barra de herramientas Botón Atrás
  • Android: transición errónea al utilizar navigateUpFromSameTask ()
  • Android: Regresar al fragmento anterior en la parte posterior de la prensa
  • Android fragmento de navegación para las tabletas - una o varias actividades?
  • Cambiar Icono Del Cajón De Navegación
  • Cómo actualizar la lista del cajón de navegación tan pronto como su abrir / cerrar en Android
  • ¿Cómo organizar una aplicación utilizando fragmentos?
  • Propósito de navegación que funcionaría con mapas y waze
  • Pestañas intercambiables en el fragmento Menú Deslizante
  • Color de fondo del elemento del cajón de navegación para el elemento seleccionado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.