gpt4 book ai didi

android - 如何在 android 仪器测试中停止和重新启动 Activity ?

转载 作者:IT老高 更新时间:2023-10-28 23:31:42 25 4
gpt4 key购买 nike

我正在尝试编写一个停止(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 生命周期图: enter image description here

关于android - 如何在 android 仪器测试中停止和重新启动 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com