2012-01-03 10 views
14

Como acabo de enterar, Android se reserva el derecho de eliminar el proceso de una aplicación en segundo plano en cualquier momento para reciclar la memoria RAM. La aplicación todavía se está ejecutando y se puede reanudar sin embargo, pero todas mis variables estáticas se han ido (vea el artículo this).Android Simulator: ¿Manera fácil de simular un reinicio del proceso debido a poca memoria?

Me gustaría simular el comportamiento de mi aplicación en este escenario. ¿Cuál es la forma más fácil de hacer esto? Sin duda debe haber una manera más fácil y más predecible que escribir algunas aplicaciones adicionales que asignan mucha memoria.

+0

difiere esto de matar a su propio proceso de 'android.os.Process. killProcess (android.os.Process.myPid()) '? – tidbeck

+0

@tidbeck: Supongo que es tan bueno como el mío. Me refiero a este artículo: http://android-developers.blogspot.com/2010/04/multitasking-android-way.html –

+0

posible duplicado de [Android: cómo forzar el reinicio del servicio (OS que mata con poca memoria) ] (http://stackoverflow.com/questions/7257378/android-how-to-force-restart-service-os-killing-on-low-memory-behavior) – Flow

Respuesta

3

respuesta corta: la orientación del cambio si está utilizando un emulador . si usa el dispositivo real, cambie la configuración yendo a configuración -> opciones de desarrollador -> no guarde las actividades.

ver mi respuesta a this y this para una explicación más detallada.

+0

¡Gracias! Lo comprobaré la próxima vez que actualice mi aplicación de Android. –

+0

esto prueba un cambio de configuración, no un reinicio del proceso. estas son dos cosas diferentes. – ZakTaccardi

+0

No mantener las actividades no destruirá el contexto global de la aplicación, queremos ser capaces de destruir el contexto de la aplicación global para que al volver a ejecutar intente iniciar desde la aplicación onCreate() e inicie la última actividad abierta –

2

Una forma alternativa es crear una aplicación súper básica que llame al killBackgroundProcesses() para su paquete, porque este método "es el mismo que el kernel elimina esos procesos para reclamar memoria; el sistema se encargará de reiniciar estos procesos en el futuro según sea necesario."

1

Para matar procesos en segundo plano (pero aún relanzar a través de la historia), que sólo puede utilizar comandos de la shell de gestión de actividades en el simulador o dispositivo:

$ adb shell am kill com.my.package 
Cuestiones relacionadas