Domanda

Sto cercando di capire il tutorial attività di test sul sito Android. Uno dei test imposta un filatore nell'esempio SpinnerActivity, forze una pausa, poi ripristina lo spinner, forze Discuti e quindi verifica che l'applicazione correttamente ripristinato lo stato. Ho incollato il codice corrispondente in fondo a questa domanda per riferimento.

Sono molto confuso il motivo per cui la persona che scrive il test pensa che il filatore potrebbe essere stato danneggiato tra l'OnPause () e onResume (). È questo perché il filatore avrebbe potuto essere riutilizzato in qualche attività successiva e quindi perso il suo stato? Questa è l'unica spiegazione ragionevole che posso pensare.

Sono preoccupato per preservare le attività della mia applicazione utenti non di widget, come le stringhe, interi, ecc Questi sono inizializzati durante OnCreate e non saranno modificabili dall'utente. Di conseguenza, non vedo alcun motivo per risparmiare loro fuori durante OnPause, perché anche se il sistema operativo termina direttamente l'attività dopo una pausa, l'OnCreate () si ri-inizializzare questi membri.

E 'sicuro quindi supporre che questi membri non di widget non saranno danneggiati nei momenti di pausa (supponendo che l'applicazione alla fine riprende?)

 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);
 }          
È stato utile?

Soluzione

Il probabile motivo è perché la vostra applicazione può essere ucciso quando è in uno stato di pausa. Prendete questo esempio:

  1. onCreate - inizializzazione a 5
  2. utente seleziona 3 |
  3. attività foglie degli utenti, l'attività in pausa
  4. Android cancella l'attività b / c è bisogno di risorse
  5. utente ritorna all'attività
  6. onCreate si chiama - inizializzato a 5
  7. onResume si chiama - vede che c'è salvati i dati, risulta il valore di 3
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top