0
我想了解Android网站上的活动测试教程。其中一个测试在SpinnerActivity示例中设置了一个微调器,强制暂停,然后重置微调器,强制恢复,然后验证应用程序是否正确恢复了状态。我在这个问题的底部粘贴了相关代码以供参考。Android活动测试示例混淆了OnPause期望
我很困惑为什么编写测试的人认为Spinner可能在OnPause()和OnResume()之间被破坏。这是因为微调控制器可能在以后的一些活动中被重用,从而失去了它的状态?这是我能想到的唯一合理的解释。
我很关心保留我的应用程序的活动非小部件成员,如字符串,整数等。这些在OnCreate中初始化并且不会被用户更改。因此,我认为没有理由在OnPause期间将其保存,因为即使OS在暂停后直接终止活动,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);
}
我认为我的困惑源自于我期望在OnCreate()内的步骤6中涵盖的第7步的行为。如果活动已终止,OnResume()将不会在没有事先OnCreate()调用的情况下调用,对吧?在OnResume()中,当它只能在OnCreate()需要处理时,我看不到在OnResume()中产生这种通常不必要的上下文恢复开销的价值。我误解了什么吗? – 2010-09-23 15:33:33
你说得对,我不认为你有任何理由不能在onCreate中处理。尽管如此,你确实需要将它保存在onPause中。 – 2010-09-23 16:02:47