studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android activity-lifecycle onrestoreinstancestate

para - manual de programacion android pdf



¿Cómo simular la actividad de matar para conservar la memoria? (8)

Android doc dice:

"Cuando el sistema, en lugar del usuario, apaga una actividad para conservar la memoria, ..."

Pero, ¿cómo simular esta situación? Quiero depurar el onRestoreInstanceState(Bundle) , pero no sé cómo hacerlo.


Buenas respuestas aquí.

Ahora, residiendo en un futuro lejano, el uso de Ejecución instantánea en Android Studio también activará un guardado y restauración cuando las actividades se reinicien con los cambios de código.


Hay dos formas de simular el proceso de destrucción de Android: usar la configuración "No mantener las actividades" en la configuración del desarrollador o eliminar el proceso de la aplicación por tu cuenta.

Para finalizar el proceso, abra la actividad que desea probar, luego presione el botón de inicio para enviar su aplicación al fondo y luego, utilizando DDMS en Android Studio (Monitor de dispositivo Android), seleccione el proceso y luego deténgalo (como se ve) en la imagen de abajo). Tu aplicación fue asesinada. Ahora, abra su aplicación nuevamente (acceda a la lista de aplicaciones abiertas). Ahora puedes probar el estado muerto.



He usado la opción de desarrollador "No mantener actividades" para reproducir un bloqueo que ocurrió cuando se eliminó una actividad debido a la presión de la memoria. Puede encontrarlo en la sección Apps de Settings->Developer Options .

Destruye cada actividad tan pronto como la dejas. Por ejemplo, si presiona Inicio para poner su aplicación en segundo plano, se destruye la actividad actual. Consulte https://.com/a/22402360/2833126 para obtener más información.


No se puede hacer de forma automática porque b / c es completamente no determinista.

Vea mi respuesta aquí: https://.com/a/15048112/909956 para más detalles.

Pero la buena noticia es que todo lo que necesita hacer es simular las llamadas a SaveInstanceState y está probando indirectamente esta situación de poca memoria.

onSaveInstanceState puede ser activado por:

  1. perder el enfoque (presionando inicio, que en esencia es como cambiar de la aplicación a la aplicación de inicio), lanzar otra actividad, presionar los últimos
  2. cambiando de orientación. Esta es la forma más fácil si está utilizando un emulador.
  3. cambiando la configuración del desarrollador: vaya a las opciones de desarrollador -> Aplicaciones -> No mantener las actividades. Esta es la mejor opción si está probando temporalmente en un dispositivo real.

Para depurar onRestoreInstanceState puede hacer lo siguiente:

  • asegúrate de que puedes depurar la aplicación justo después de su inicio (llamar a android.os.Debug.waitForDebugger () desde tu constructor ayuda, bloquea tu aplicación hasta que el depurador esté conectado),

  • poner tu aplicación en algún estado,

  • matarlo causalmente desde Configuración-> Aplicaciones ,

  • causalmente vuelva a él a través del botón Aplicaciones recientes (aún estará en la lista),

  • en este momento su aplicación se iniciará de nuevo y se llamará de inmediato a onRestoreInstanceState en la actividad principal.


Para los propósitos de depurar onRestoreInstanceState() , simplemente cambie la orientación de la pantalla ([Ctrl] - [F11] en el emulador). Su actividad se destruirá y se volverá a crear, y se onSaveInstanceState() el onSaveInstanceState() / onRestoreInstanceState() .


Use la aplicación SetAlwaysFinish (funciona en un dispositivo real y en el emulador) o use la aplicación Google DevTools (funciona solo en el emulador).

Estas aplicaciones utilizan la configuración AlwaysFinish oculta de la clase ActivityManagerNative para cambiar el comportamiento del sistema operativo y provocar que descargue de inmediato todas las actividades tan pronto como ya no estén en primer plano. Esto activará de manera confiable los eventos onSaveInstanceState y onRestoreInstanceState.

Vea el enlace a continuación para obtener más detalles: http://bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/