【发布时间】:2012-01-13 06:06:20
【问题描述】:
在 Android 开发者文档中标题为“添加状态管理测试”的 Testing Fundamentals 和 Activity Testing 部分中,它建议使用以下方法重新启动测试活动:
mActivity.finish();
mActivity = this.getActivity();
在上面两个语句之间添加了一个 sleep 后,我可以看到执行 mActivity = this.getActivity() 时 Activity 没有在屏幕上重绘。我的测试似乎有效,但我很想知道为什么 Activity 没有在屏幕上重绘,因为 API 文档中似乎没有提到这一点。
如果有人能提供任何对此的见解,我将不胜感激。在调用 finish() 方法时,Activity 从屏幕上消失,但在调用 this.getActivity() 时不会重新出现。我也尝试在 getActivity() 之后放置一个 mActivity.setVisible(true),但这没有帮助。
我的代码 sn-p 现在是:
...
mActivity.finish();
Thread.sleep(5000);
mActivity = this.getActivity();
Thread.sleep(5000);
...
我进行了广泛的搜索,但找不到任何解释为什么调用 getActivity() 时 Activity 没有重新出现。
我已经在 Android 2.3.5、2.3.3 和 2.2.2 上对此进行了测试,结果都相同。
【问题讨论】:
-
感谢您提出这个问题,因为当 UI 线程不在屏幕上时,我的 UIThread 代码将无法运行!
标签: android unit-testing junit