Пример тестирования активности Android имеет запутанные ожидания OnPause - PullRequest
0 голосов
/ 23 сентября 2010

Я пытаюсь понять учебное пособие по тестированию активности на сайте Android. Один из тестов устанавливает счетчик в примере SpinnerActivity, вызывает паузу, затем сбрасывает счетчик, возобновляет и проверяет, правильно ли приложение восстановило состояние. Я вставил соответствующий код внизу этого вопроса для справки.

Я очень озадачен, почему человек, пишущий тест, считает, что вращатель мог быть поврежден между OnPause () и OnResume (). Не потому ли, что счетчик мог быть повторно использован в какой-то последующей деятельности и, таким образом, потерял свое состояние? Это единственное разумное объяснение, которое я могу придумать.

Я обеспокоен сохранением действий моего приложения, не являющихся членами виджета, таких как строки, целые и т. Д. Они инициализируются во время OnCreate и не изменяются пользователем. В результате я не вижу смысла сохранять их во время OnPause, потому что даже если операционная система напрямую завершает действие после паузы, OnCreate () будет повторно инициализировать эти элементы.

Безопасно ли тогда предполагать, что этим элементам, не являющимся виджетами, не будет причинен вред при приостановке (при условии, что приложение в конечном итоге возобновится?)

 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);
 }          

1 Ответ

1 голос
/ 23 сентября 2010

Вероятная причина в том, что ваше приложение может быть убито в состоянии паузы. Возьмите этот пример:

  1. onCreate - инициализировать до 5
  2. пользователь выбирает 3
  3. пользователь покидает активность, активность приостановлена ​​
  4. Android удаляет активность б / к, ему нужны ресурсы
  5. пользователь возвращается к активности
  6. onCreate вызывается - инициализируется 5
  7. onResume вызывается - видит, что сохраненные данные сохраняются, значение результата равно 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...