Problema con actividad cancelada por el sistema si ya no es visible en Android
Tengo actividades allí (A, B, C) dentro de mi aplicación. Cuando comienzo la actividad de la aplicación A:
A:onCreate() A:onStart() A:onResume()
Usando intención estoy llamando Segunda Actividad (A -> B):
- Cómo establecer las dos líneas de un ListView utilizando simple_list_item_2?
- Cómo guardar la imagen en la tarjeta SD en el botón Haga clic en android
- Transmisión de datos del widget a la aplicación
- ¿Cómo iniciar un PopupWindow o un diálogo de un servicio de método de entrada?
- Inexplicable ClassCastException en android.widget.ProgressBar.onRestoreInstanceState
A:onPause() B:onCreate() B:onStart() B:onResume() A:onStop()
A continuación, haga clic en el botón "Inicio" Así que la aplicación va a fondo: Ahora
B:onPause() B:onStop()
Después de 1 o 2 horas más tarde Vuelvo a la página de inicio en mi dispositivo y haga clic en el icono de la aplicación se ejecuta como:
B:onDestroy() A:onRestart() A:onStart() A:onResume()
Pero necesito ir cuál Actividad debo dejar así,
B:onRestart() B:onStart() B:onResume()
He leído algunos artículos que dice como esa actividad matada por el sistema debido a que ya no es visible.¿Hay alguna posibilidad de solucionar mi problema …
Gracias por adelantado…
- Crear barra de título personalizada en Android
- Uso del método updateAppWidgetOptions de AppWidgetManager para almacenar opciones de personalización por widget
- Cómo cambiar las imágenes predeterminadas de CheckBox
- Visualización de la actividad con animación personalizada
- Android: AppWidget con la vista personalizada no funciona
- Listview en el lado de rleft y tabhost en el lado derecho con la proporción de 20:80 compartir pantalla
- ¿Tiene Android XML Layout 'include' Tag realmente funciona?
- Cambiar android: installLocation de preferExternal a internalOnly
Usted puede estar confundiendo dos cosas diferentes aquí:
-
Android no destruye una actividad si necesita memoria. Lo que hace es que mata todo el proceso en el que se está ejecutando la actividad. En general, eso significa que Android mata todas sus actividades en esta situación. Sin embargo, recuerda la pila de actividades y cuando el usuario vuelve a la aplicación, Android creará un nuevo proceso y luego recreará cada actividad (a su vez, según sea necesario). Comienza recreando la actividad que estaba en la parte superior de la pila de actividades (es decir: donde el usuario dejó la aplicación).
-
Android asume que si el usuario deja una tarea durante un largo período de tiempo (creo que esto es algo así como 30 minutos), entonces ya no está interesado en esa tarea y no tiene sentido recordar dónde estaba el usuario en la pila de actividades de Esa tarea porque probablemente ya no le importa. En este caso, lo que sucede es que cuando el usuario vuelve a la tarea (o reinicia la aplicación que estaba en la parte superior de la pila de actividades en esa tarea), simplemente vuelve a borrar la tarea a la actividad raíz . Esto tiene el efecto de que parece que la aplicación se está iniciando de nuevo . Este es el comportamiento deseado (y documentado).
Lo que quieres hacer es evitar que Android limpie la tarea en la situación # 2. Lo haces agregando
android:alwaysRetainTaskState="true"
A la etiqueta <activity>
de la actividad raíz (es decir: la actividad que inicia su aplicación, la que tiene ACTION_MAIN
y CATEGORY_LAUNCHER
).
No creo que esto sea algo que puedas controlar. Si su actividad está en segundo plano durante mucho tiempo y mientras otras aplicaciones necesitan memoria, el sistema destruirá su actividad para liberar memoria.
- Cómo configurar el diseño de la tabla de Android Columning padding en xml
- Android / QR-Code: ¿Es posible abrir directamente Google Play Store usando un código QR?