我正在尝试了解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);
}
答案 0 :(得分:1)
可能的原因是因为您的应用在处于暂停状态时可能会被杀死。举个例子: