2011-01-08 13 views
5

Tengo una aplicación que funciona bien, excepto cuando está en segundo plano durante mucho tiempo y vuelve al primer plano. Me pregunto si esto tiene algo que ver con la bandera alwaysRetainTaskState, cuando el sistema ha borrado mi pila de actividades. Me gustaría probarlo, pero no quiero quedarme sentado durante 30 minutos todo el tiempo. ¿Hay alguna forma de activar el comportamiento normal del sistema de otra manera?Cómo probar android: alwaysRetainTaskState

Actualización: Si configuro la bandera android: clearTaskOnLaunch, ¿va a hacer lo mismo que alwaysRetainTaskState cuando reinicie la aplicación?

Respuesta

-1

Probablemente porque almacena datos en la aplicación. Cuando ha pasado mucho tiempo, la aplicación se elimina (debido a la memoria, etc.).

Al devolverlo restaura todo excepto los objetos de la Aplicación ... que son nulos que se bloquea.

+0

La aplicación ciertamente no es el término correcto aquí. La actividad se mata debido a la memoria. La aplicación siempre permanece activa mientras haya CUALQUIER componente activo. Además, no ha visto el código del usuario y está haciendo suposiciones que no son necesariamente válidas. Este comportamiento sin duda puede ocurrir si no hay información en el objeto Applicatio. Finalmente, no aborda la cuestión de los PO de ninguna manera. El OP quiere probar una bandera. –

3

¿Hay alguna manera de desencadenar el comportamiento normal del sistema de otra manera?

La manera más fácil de probar alwaysRetainTaskState es dejar la actividad y poner en marcha varias aplicaciones (una después de la otra) que usan mucha memoria. Es repetitivo pero bastante confiable. Puedo disparar uno en mi Galaxy S-II después de aproximadamente 40 segundos si selecciono las aplicaciones correctas.

A falta de eso, no conozco otra forma directa de probar esta bandera.

Si configuro la bandera android: clearTaskOnLaunch, ¿va a hacer lo mismo que alwaysRetainTaskState cuando reinicie la aplicación?

Absolutamente no. ClearTaskOnLaunch básicamente significa que su aplicación volverá a la actividad raíz. Todas las demás actividades se eliminan de tu pila de actividades. Esto significa que si su actividad depende de actividades para entregar su contenido, todo se perderá. En otras palabras, devuelve al usuario al estado inicial de la Pila de actividades para su Aplicación. Es puede mantener el estado de que Actividad que depende del indicador alwaysRetainTaskState.

Información adicional

alwaysRetainTaskState sólo es útil en la actividad de las raíces. Su objetivo básico es mantenerlo y todas las demás actividades con vida durante un período de tiempo más largo. Cualquier objeto que no esté directamente vinculado a esas actividades está en flujo y puede ser descartado. A menudo, si alwaysRetainTaskState no funciona, es porque su código está eliminando manualmente las referencias (normalmente en respuesta a onPause() o un evento similar).

Cuestiones relacionadas