Android Lifecycle – ActivityManager mata proceso -> Excepción al volver de fondo

Estoy teniendo un problema muy aburrido. Cuando mi aplicación va a fondo, a veces el proceso se pierde como muestra el LogCat:

INFO/ActivityManager(187): Low Memory: No more background processes. INFO/ActivityManager(187): Process com.app.myapp (pid 20681) has died. INFO/WindowManager(187): WIN DEATH: Window{40592708 com.app.myapp/app.myapp.dashboard.Dashboard paused=false} ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Consumer closed input channel or an error occurred. events=0x8 ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Channel is unrecoverably broken and will be disposed! INFO/WindowManager(187): WIN DEATH: Window{408b1d40 app.myapp/app.myapp.menus.products.Promotions paused=false} INFO/ActivityManager(187): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=app.myapp/.Main } from pid 187 INFO/ActivityManager(187): Start proc app.myapp for activity app.myapp/.menus.products.Promotions: pid=20721 uid=10062 gids={3003, 1015} 

Cuando luego intento volver a la aplicación, a través de conmutador de tareas (prensa larga a casa) intenta volver a la última actividad abierta … y se bloquea.

¿Por qué no se abre desde cero, abriendo Main como la aplicación completa se cerró?

Los errores ERROR / InputDispatcher no siempre aparecen.

ACTUALIZAR:

El problema es … la aplicación se restaura, pero los objetos en ella que se descargaron (como hashmap) no son … por lo que cuando los accedo …. tengo "problemas" …

ACTUALIZACIÓN 2:

He logrado solucionar el problema verificando onCreate en BaseActivity (que se extiende por todos los demás) si la aplicación contiene los datos que necesito o si es nulo (en este caso se reinicia la aplicación).

¿Hay una solución más elegante, o por lo menos una manera de decir al dispositivo que si la aplicación se mata, quiero que la aplicación se reinicie?

Estos enlaces ayudaron a entender el problema … y saber que no hay una respuesta clara para cómo almacenar los datos de la aplicación: ¿Cómo declarar variables globales en Android?

ACTUALIZACIÓN 3:

Así que hice una pregunta específicamente de cómo guardar los datos de la aplicación correctamente . Esto puede ayudar a aquellos con la misma pregunta: Android: Mejor manera de guardar los datos almacenados en la clase Singleton de aplicación

En la medida en que ubderstand vuelve porque el usuario no cerró la aplicación. A sin embargo: ¿está accediendo a los datos del paquete en esa actividad que se pasa desde la actividad de apertura? Si es así, puede que desee ver las funciones de ahorro y restauración de instancias de bundle que puede implementar para resolver la aplicación que vuelve al primer plano en un estado no válido.

Editar para mayor claridad: la aplicación se restaura a su estado anterior porque fue destruida por el sistema operativo debido a poca memoria mientras está en segundo plano. Tras la conmutación de la tarea, se restaura el estado anterior y los datos del paquete inválidos / inexistentes pueden estar causando el bloqueo cuando se reanuda esa actividad.

  • DialogFragment - retención del oyente tras la rotación de la pantalla
  • Escenario de Android donde ondestroy () se llama sin onpause () o onstop ()
  • Actividad ciclo de vida: ¿Por qué se establece en "Pausado" y no "Detenido"
  • OnCreateOptionsMenu en un ciclo de vida de Fragmento
  • ¿Se puede reanudar una actividad de Android después de finalizar ()?
  • Android Fragment onCreateView vs. onActivityCreated
  • Cómo recuperar el paquete onSaveInstanceState () en onResume ()?
  • Android: onDestroy () o un método similar en la clase Application
  • ¿Cómo evito que Android tome una captura de pantalla cuando mi aplicación va al fondo?
  • Ciclo de vida del objeto estático de Android
  • ¿Debe la llamada al método de superclase ser la primera instrucción?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.