我正在尝试编写一个停止(onPause()
,然后是 onStop()
)并重新启动当前 Activity 的 Android Activity 检测测试。我试过了
activity.finish();
activity = getActivity();
...但这似乎无法正常工作。
测试的目标是断言表单数据在 onPause()
方法期间存储并在 onStart()
方法期间重新读取。它在手动执行时有效,但测试失败,由此我得出结论 activity.finish()
似乎是停止和重新启动 Activity 的错误方法。
编辑:我的主要问题似乎是同步问题。重新启动 Activity 后,测试运行程序没有等待所有事件处理程序完成。以下行暂停测试执行,直到 Activity 空闲:
getInstrumentation().waitForIdleSync()
除此之外,请查看已接受的答案以获取有关生命周期的更多有值(value)信息。
最佳答案
通过调用(或触发屏幕方向更改):
activity.finish(); // old activity instance is destroyed and shut down.
activity = getActivity(); // new activity instance is launched and created.
使 Activity 经历完整的娱乐生命周期:
onPause() -> onStop() -> onDestroy() -> onCreate()
你需要的是:
onPause() -> onStop() -> onRestart()
我暴露了Instrumentation API最近发现了很多有趣的activity生命周期触发方法callActivityOnXXX(),下面一行代码就可以解决问题了:
MyActivity myActivity = getActivity();
// make activity falling into restart phase:
getInstrumentation().callActivityOnRestart(myActivity);
引用官方开发指南的 Activity 生命周期图:
关于android - 如何在 android 仪器测试中停止和重新启动 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296110/