Question

Je suis en train de comprendre le tutoriel tester l'activité sur le site Android. L'un des tests définit une fileuse dans l'exemple de SpinnerActivity, les forces d'une pause, puis remet à zéro la fileuse, les forces d'un curriculum vitae, puis vérifie que l'application correctement restauré l'état. Je collais le code correspondant au bas de cette question pour référence.

Je suis très confus pourquoi la personne qui écrit le test pense que la fileuse aurait pu être corrompu entre le OnPause () et onResume (). Est-ce parce que la fileuse aurait pu être réutilisé dans une activité ultérieure et donc perdu son état? C'est la seule explication raisonnable que je peux penser.

Je suis préoccupé par la préservation des activités des membres non-widget de mon application tels que des chaînes, ints, etc. Ceux-ci sont initialisés au cours OnCreate et ne seront pas modifiés par l'utilisateur. Par conséquent, je ne vois aucune raison de les mettre hors circuit pendant OnPause, car même si le système d'exploitation se termine directement l'activité après une pause, le OnCreate () réinitialisera ces membres.

Est-il sûr alors de supposer que ces membres non-widget ne seront pas lésés lors de la pause (en supposant que l'application reprend par la suite?)

 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);
 }          
Était-ce utile?

La solution

La raison probable est que votre application peut être tué quand dans un état mis en pause. Prenez cet exemple:

  1. onCreate - initialize à 5
  2. utilisateur sélectionne 3
  3. activité de feuilles d'utilisateur, l'activité mise en pause
  4. Android supprime l'activité b / c il a besoin de ressources
  5. utilisateur retourne à l'activité
  6. onCreate est appelé - initialisé à 5
  7. onResume est appelé - Vérifie qu'il est enregistré des données, les résultats de la valeur à 3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top