0

我正在尝试了解 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);
 }          
4

1 回答 1

1

可能的原因是您的应用程序在暂停状态下可能会被终止。举个例子:

  1. onCreate - 初始化为 5
  2. 用户选择 3
  3. 用户离开活动,活动暂停
  4. Android 删除活动 b/c 它需要资源
  5. 用户返回活动
  6. onCreate 被调用 - 初始化为 5
  7. onResume 被调用 - 看到有保存的数据,结果值为 3
于 2010-09-22T21:33:40.510 回答