No mantener actividades: ¿para qué sirve?

El título es bastante autoexplicativo. Entiendo lo que hace esta opción de desarrollador.

Lo que no entiendo son los siguientes puntos:

  1. ¿Por qué se introdujo esa opción, en primer lugar?
  2. Después de todos los cambios que el marco ha visto a través de los años, ¿sigue siendo útil?

Estoy ansioso por saber las razones detrás de esta opción.

Creo que es una característica utilizada para fines de depuración.

Del documento de titanio :

No mantenga las actividades en el menú Opciones de Desarrollador. Cuando esta opción está habilitada, el sistema operativo Android destruirá una actividad tan pronto como se detenga. Está destinado a ayudar a los desarrolladores a depurar sus aplicaciones. Por ejemplo, puede simular el caso de que Android mate una actividad en segundo plano debido a la presión de la memoria. En el uso normal, no se recomienda activar esta opción porque puede provocar problemas inesperados en las aplicaciones, como lockings, forzar el cierre y reinicios.

Parece que básicamente ayuda a probar determinísticamente cómo se comporta su aplicación cuando el sistema operativo la apaga por algún motivo (memoria insuficiente, etc.).

Entonces, esto respondió al punto 1. El punto 2 es: Sí, supongo 🙂

EDITAR : referencias adicionales

  • En SO ¿Cómo se puede saber “No mantener actividades” está habilitado en ICS?
  • un hilo interesante sobre eso en androidcentral (respuesta de MagouyaWare)

El marco de Android puede destruir su actividad cada vez que esté en segundo plano o backstack, y debe escribir sus actividades para que se comporten correctamente cuando esto suceda. Exactamente lo que eso implica varía según lo que hace la actividad, pero generalmente incluye la implementación de onSaveInstanceState(...) y la restauración de cualquier estado anterior en onCreate(...) .

La opción de desarrollador de “no mantener actividades” simplemente cambia el comportamiento del marco de modo que siempre destruirá tu actividad cuando entre en el fondo o backstack. Esto le permite probar cómo responde su actividad a lo que normalmente es una ocurrencia rara.

Un enlace citado en otra respuesta dice:

En el uso normal, no se recomienda activar esta opción porque puede provocar problemas inesperados en las aplicaciones, como lockings, forzar el cierre y reinicios.

Esto es incorrecto. Si sus actividades están escritas correctamente, el único efecto de tener activadas las actividades “no mantener actividades” debería ser (posiblemente) un uso de la batería y de la CPU ligeramente mayor que guardar y restaurar constantemente el estado persistente. Cualquier aplicación que muestre “problemas inesperados” o cierre forzado cuando esta opción está activada se rompe y debe corregirse. Como desarrollador, habitualmente dejo activada “no mantener actividades” todo el tiempo. He visto muchas aplicaciones defectuosas, incluso algunas de Google. Pero nunca ha provocado un reinicio, y no creo que haya ninguna forma de hacerlo.