La aplicación comienza siempre nueva de la actividad de la raíz en lugar de reanudar el estado de fondo (Bug conocido)

Estoy enfrentando exactamente el problema mencionado en estos acoplamientos:

Http://code.google.com/p/android/issues/detail?id=2373

Http://groups.google.com/group/android-developers/browse_thread/thread/77aedf6c7daea2ae/da073056831fd8f3?#da073056831fd8f3

Http://groups.google.com/group/android-developers/browse_thread/thread/2d88391190be3303?tvc=2

Tengo una actividad simple de la raíz con las intenciones del LANZAMIENTO y PRINCIPALES y nada más . Comienzo otra actividad con no tiene banderas ni nada extra en el manifiesto.

Inicie la aplicación (actividad raíz) y desde allí iniciar la segunda actividad. Al pulsar el botón Inicio, la tarea pasa al fondo. Al iniciar de nuevo la aplicación (desde el Lanzador o desde el botón Inicio para aplicaciones recientes), se inicia una nueva instancia de la actividad raíz encima de la pila existente.

Si presiono el botón de retroceso, se cierra la nueva actividad de "raíz" y se ve la segunda actividad anterior, lo que significa que se inicia la actividad de raíz en la misma tarea en lugar de llevar la tarea al primer plano.

Para contrarrestar esto hice el modo de lanzamiento de la actividad de la raíz SingleTask . Ahora, cuando presiono en casa y vuelvo a lanzar la aplicación, borra las actividades por encima de la antigua tarea raíz y trae la tarea raíz antigua al primer plano en lugar de simplemente llevar toda la tarea antigua con la segunda actividad en la parte superior al frente. Tenga en cuenta que la antigua tarea raíz aún conserva su estado de aplicación, lo que significa que no era una nueva instancia, pero las actividades superiores habían sido eliminadas.

Incluso se produce en otras aplicaciones descargadas del mercado. El método de instalación manual no tiene ningún efecto para mí, todavía se lanza de la misma manera.

Esto se debe a las intenciones que se utilizan para iniciar la aplicación es diferente. Eclipse inicia una aplicación con una intención sin acción y sin categoría. El Lanzador inicia una aplicación utilizando una intención con la acción android.intent.action.MAIN y la categoría android.intent.category.LAUNCHER. El instalador inicia una aplicación con la acción android.intent.action.MAIN y sin categoría.

Quienquiera que haya presentado el error debería haberlo redactado probablemente como una solicitud de mejora del complemento de Eclipse, ya que aparentemente desean que Eclipse tenga la capacidad de pretender ser el lanzador e iniciar aplicaciones con la misma intención que el lanzador.

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { // Activity was brought to front and not created, // Thus finishing this will get us to the last viewed activity finish(); return; } // Regular activity creation code... } 

Aquí está la solución:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0 & getIntent().getExtras() == null) { finish(); return; } Your code.... } 

EDIT: Tenía problemas con nuevas intenciones y notificaciones. La solución anterior no funciona con notificaciones e intenciones …

Solución similar para Xamarin.Android:

 if (!IsTaskRoot) { string action = this.Intent.Action; if (this.Intent.HasCategory(Intent.CategoryLauncher) && !string.IsNullOrEmpty(this.Intent.Action) && action == Intent.ActionMain) { Finish(); return; } } 
  • Borrar tarea e iniciar una nueva actividad
  • Cómo borrar una tarea en Android y cambiar la actividad de la raíz?
  • Android: Error de OutOfMemory y el backstack
  • Android: ¿FLAG_ACTIVITY_NEW_TASK tiene efecto dentro del mismo proceso?
  • ActivityManager.killBackgroundProcesos diferentes de "Parada de fuerza"
  • Diferencia entre un asesino de tareas matando una aplicación y el sistema operativo Android Matando una aplicación
  • Android: Cancelar tarea asíncrona
  • ¿Cómo llevar una Actividad al primer plano (o crear si no existe)?
  • Cómo terminar una actividad de otra actividad
  • ¿El nombre del proceso es el mismo que el nombre del paquete en android?
  • Cómo evitar que el servicio se reinicie después de que la actividad se haya barrido desde el conmutador de tareas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.