Android活动测试示例令人困惑
-
04-10-2019 - |
题
我正在尝试了解Android网站上的活动测试教程。其中一项测试在旋转式示例中设置了一个旋转器,迫使暂停,然后重置旋转器,迫使简历,然后验证应用程序是否正确恢复了状态。我将相关的代码粘贴在此问题的底部以供参考。
我很困惑为什么写测试的人认为旋转器可能在Onpause()和onResume()之间被损坏。这是因为旋转器本可以在随后的某些活动中重复使用,从而失去了状态?这是我能想到的唯一合理的解释。
我担心保留应用程序的活动非智能成员,例如字符串,ints等。这些活动在发电过程中是初始化的,并且用户不会更改。结果,我没有看到在Onpause期间将它们保存的任何理由,因为即使操作系统在暂停后直接终止活动,ongreate()也会重新启动这些成员。
然后,假设这些非野外成员在暂停时不会受到伤害(假设应用程序最终恢复?)
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);
}
解决方案
可能的原因是因为在暂停状态下,您的应用程序可能会被杀死。以此示例:
- ongreate-初始化为5
- 用户选择3
- 用户离开活动,暂停活动
- Android删除活动b/c需要资源
- 用户返回活动
- 称为 - 初始化为5
- 称为ronmume-看到保存的数据,结果值为3
不隶属于 StackOverflow