我正在尝试了解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);
 }          
有帮助吗?

解决方案

可能的原因是因为在暂停状态下,您的应用程序可能会被杀死。以此示例:

  1. ongreate-初始化为5
  2. 用户选择3
  3. 用户离开活动,暂停活动
  4. Android删除活动b/c需要资源
  5. 用户返回活动
  6. 称为 - 初始化为5
  7. 称为ronmume-看到保存的数据,结果值为3
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top