Frage

Ich versuche, das Activity Testing Tutorial auf der Android-Website zu verstehen. Einer der Tests setzt einen Spinner im SpinnerActivity Beispiel Kräfte eine Pause, setzt dann die spinner, Kräfte eine Fortsetzungs und überprüft dann, dass die Anwendung wiederhergestellt korrekt den Zustand. Ich klebte den entsprechenden Code am unteren Rand dieser Frage Referenz.

Ich bin sehr verwirrt, warum die Person das Schreiben der Prüfung der Ansicht, dass der Spinner zwischen dem OnPause () und onResume () beschädigt worden sein könnte. Ist es, weil die Spinner wurden in einer späteren Aktivität wiederverwendet konnten und verloren somit seinen Zustand? Das ist die einzige vernünftige Erklärung, die ich mir vorstellen kann.

Ich bin besorgt über meine Anwendung Aktivitäten nicht-Widget Mitglieder wie Strings zu bewahren, Ints, usw. Diese werden während OnCreate initialisiert und wird vom Anwender nicht geändert werden. Als Ergebnis sehe ich keinen Grund, sie während OnPause, sparen, denn selbst wenn das Betriebssystem direkt die Aktivität nach einer Pause beendet, wird die OnCreate () neu zu initialisieren diese Elemente.

Ist es sicher dann davon ausgehen, dass diese Nicht-Widget-Mitglieder werden nicht geschädigt werden, wenn eine Pause (unter der Annahme, dass die Anwendung schließlich wieder?)

 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);
 }          
War es hilfreich?

Lösung

Der wahrscheinliche Grund ist, weil Ihre Anwendung, wenn in einem pausierten Zustand getötet werden kann. Nehmen Sie dieses Beispiel:

  1. onCreate - initialize bis 5
  2. Benutzer wählt 3
  3. Benutzer Blätter Aktivität, Aktivität pausiert
  4. Android löscht Aktivität b / c es braucht Ressourcen
  5. Benutzer kehrt zur Aktivität
  6. onCreate genannt wird - initialisiert bis 5
  7. onResume genannt wird - sieht, dass Daten gespeichert wird, ergibt den Wert auf 3
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top