168 votos

Cómo simular Android matar mi proceso

Android va a matar un proceso, si es, en el fondo, y el sistema operativo decide que necesita los recursos (RAM, CPU, etc.). Necesito ser capaz de simular este comportamiento durante las pruebas, por lo que puedo asegurar que mi aplicación se comporta correctamente. Quiero ser capaz de hacer esto de una forma automática de modo que puedo probar si la aplicación se comporta correctamente cuando esto sucede, lo que significa que voy a tener que probar esto en cada actividad, etc.

Sé cómo matar a mi proceso. Ese no es el problema. El problema es que cuando me matan a mi proceso (uso de DDMS, adb shell kill, Process.killProcess(), etc.) Android no se reinicia de la misma manera que lo haría si el Android OS había matado a sí mismo.

Si el sistema operativo Android mata el proceso (debido a los requisitos de recursos), cuando el usuario regresa a la aplicación de Android va a recrear el proceso y volver a crear la parte superior de la actividad en la actividad de la pila (llamando onCreate()).

Por otro lado, si he de matar el proceso, Android se supone que la actividad en la parte superior de la actividad de pila estaba mal comportamiento, por lo que automáticamente se recrea en el proceso y, a continuación, quita la parte superior de la actividad de la actividad de la pila y vuelve a la actividad que estaba debajo de la parte superior de la actividad (llamando onCreate()`). Este no es el comportamiento que yo quiero. Quiero el mismo comportamiento que cuando Android mata el proceso.

Sólo para explicar gráficamente, si mi actividad pila se parece a esto:

    ActivityA -> ActivityB -> ActivityC -> ActivityD

Si Android mata el proceso y el usuario devuelve a la aplicación, Android recrea el proceso y se crea ActivityD.

Si he de matar el proceso, Android recrea el proceso y se crea ActivityC.

121voto

Mark Puntos 1141

La mejor manera de probar esto para mí fue hacer esto:

  • Abierto ActivityD en su aplicación
  • Pulse el botón Inicio
  • Pulse Stop en el DDMS en su aplicación (esto matará a la aplicación de proceso)
  • Volver a la aplicación con la Casa de la prensa o de aplicaciones abiertas (depende del dispositivo)
  • La aplicación se iniciará en recreado ActivityD (ActivityA, ActivityB, ActivityC están muertos y va a ser divertido cuando usted consigue de nuevo a ellos)

En algunos dispositivos también puede volver a la aplicación (ActivityD) con Aplicaciones -> El icono del launcher, pero en otros dispositivos se iniciará el ActivityA lugar.

Esto es lo que Android docs están diciendo acerca de que:

Normalmente, el sistema borra una tarea (elimina todas las actividades de la pila por encima de la raíz de la actividad) en ciertas situaciones cuando el usuario selecciona la tarea desde la pantalla de inicio. Normalmente, esto se realiza si el usuario no ha visitado la tarea para una cierta cantidad de tiempo, tales como 30 minutos.

3voto

vArDo Puntos 3428

Parece que quiere probar onSaveInstanceState y onRestoreInstanceState.

Pruebas en el dispositivo real: echa un vistazo a SetAlwaysFinish de la aplicación.

Las pruebas en el emulador: checkout destruir Inmediatamente las actividades de opción en Dev Herramientas de la Aplicación en el emulador de Android.

3voto

billynomates Puntos 678

En las opciones del Desarrollador en configuración, seleccione 'No mantener actividades', que destruirá las actividades tan pronto como usted navega lejos de ellos.

2voto

Coffee123 Puntos 58

A todos, Sólo quería hacerle saber acerca de este documento que he encontrado:

http://developer.android.com/tools/testing/activity_testing.html

No puedo decir con 100% de certeza de que hay un método kill aquí exactamente la misma que la de Android, pero, es el inicio. Usted puede simular muchas partes de la actividad del ciclo de vida de aquí, así que usted debe ser capaz de simular el asesinato de un proceso.

También aquí hay un tutorial: http://developer.android.com/tools/testing/activity_test.html#StateManagementTests

Espero que esto ayude. Saludos

2voto

Igor Kostomin Puntos 11

Puede hacer lo siguientes pasos para reproducir comportamiento buscado para:

  1. Abrir la aplicación, desplácese hasta actividad superior
  2. Utilice el panel de notificación para navegar a cualquier otra aplicación de pantalla completa (por ejemplo, a ajustes del sistema - en la esquina superior derecha)
  3. Matar el proceso de aplicación
  4. Pulse el botón atrás

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X