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