Cómo probar Android: alwaysRetainTaskState

Tengo una aplicación que funciona bien, excepto cuando está en segundo plano durante mucho tiempo y se vuelve a poner en 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 cada vez. ¿Hay alguna forma de activar el comportamiento normal del sistema de alguna otra manera?

Actualización: si configuro el indicador android: clearTaskOnLaunch, ¿hará lo mismo que alwaysRetainTaskState cuando reinicie la aplicación?

preguntado el 08 de enero de 11 a las 16:01

2 Respuestas

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

La forma más fácil de probar alwaysRetainTaskState es salir de la Actividad e iniciar varias aplicaciones (una tras otra) que usan una tonelada de memoria. Es repetitivo pero bastante confiable. Puedo activar uno en mi Galaxy S-II después de unos 40 segundos si elijo las aplicaciones adecuadas.

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

Si configuro el indicador android: clearTaskOnLaunch, ¿hará 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 su pila de actividades. Esto significa que si su actividad se basa en actividades infantiles para entregar su contenido, se perderá todo. En otras palabras, devuelve al usuario al estado inicial de la pila de actividades de su aplicación. Eso pueden mantener el estado de que Actividad que depende del indicador alwaysRetainTaskState.

Información Adicional

alwaysRetainTaskState solo es útil en tu actividad raíz. Su propósito básico es mantenerlo vivo y todas las demás Actividades durante un período de tiempo más largo. Cualquier objeto que no esté directamente relacionado con esas Actividades está en proceso de cambio y se puede descartar. A menudo, si alwaysRetainTaskState no funciona, es porque su código se está deshaciendo manualmente de las referencias (normalmente en respuesta a onPause() o evento similar).

respondido 25 mar '13, 09:03

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

Al regresar, restaura todo menos los objetos de la Aplicación ... que son nulos y se bloquea.

Respondido el 07 de junio de 11 a las 19:06

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

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.