¿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).
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. –