Pregunta

Estoy tratando de entender el tutorial Pruebas de actividad en el sitio Android. Una de las pruebas establece una ruleta en el ejemplo SpinnerActivity, las fuerzas de una pausa, entonces se restablece el control de giro, las fuerzas de un curriculum vitae, y luego verifica que la aplicación restaurados adecuadamente el estado. Pegué el código correspondiente en la parte inferior de esta pregunta para referencia.

Estoy muy confundido por qué la persona que escribe la prueba piensa que el spinner podría haberse dañado entre el OnPause () y onResume (). Se debe esto a la ruleta podría haber sido reutilizado de alguna actividad posterior y por lo tanto pierde su estado? Esa es la única explicación razonable que se me ocurre.

Me preocupa la preservación de las actividades de mi solicitud de los miembros no widgets tales como cadenas, enteros, etc. Estos se inicializan durante OnCreate y no serán modificados por el usuario. Como resultado, no veo ninguna razón para guardarlas apagado durante OnPause, porque incluso si el sistema operativo termina directamente la actividad después de una pausa, el OnCreate () volverá a inicializar estos miembros.

¿Es seguro entonces asumir que estos miembros no widgets no se verán perjudicados cuando pausa (suponiendo que la aplicación finalmente se reanuda?)

 public void testStatePause() {
    Instrumentation mInstr = this.getInstrumentation();
    mActivity.setSpinnerPosition(TEST_STATE_PAUSE_POSITION);
    mActivity.setSpinnerSelection(TEST_STATE_PAUSE_SELECTION);
    mInstr.callActivityOnPause(mActivity);          
    mActivity.setSpinnerPosition(0);
    mActivity.setSpinnerSelection("");
    mInstr.callActivityOnResume(mActivity);
    int currentPosition = mActivity.getSpinnerPosition();
    String currentSelection = mActivity.getSpinnerSelection();
    assertEquals(TEST_STATE_PAUSE_POSITION,currentPosition);
    assertEquals(TEST_STATE_PAUSE_SELECTION,currentSelection);
 }          
¿Fue útil?

Solución

La razón probable es debido a que su aplicación puede ser la vida cuando en estado de pausa. Tome este ejemplo:

  1. onCreate - initialize a 5
  2. usuario selecciona 3
  3. actividad hojas de usuario, la actividad de pausa
  4. elimina Android actividad b / c que necesita recursos
  5. usuario vuelve a la actividad
  6. onCreate se llama - inicializado a 5
  7. onResume se llama - ve que no se guardan los datos, los resultados de valor a 3
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top