我需要测试我的应用程序生命周期及其销毁和重新创建,因为当键盘滑入/滑出(或旋转)时,应用程序被销毁并重新创建。当它这样做时,我还需要测试内存泄漏。
我在教程中看到http://developer.android.com/tools/testing/activity_test.html#StateManagementTests
Terminate the activity and restart it:
mActivity.finish();
mActivity = this.getActivity();
然而,这是非常简化的。我的日志似乎表明调用finish() 会产生一个具有不同线程ID 的后台线程,然后调用onPause()、finish()、onStop() 和onDestroy()。我什getInstrumentation().waitForIdleSync();
至尝试等待该后台线程完成,但是当我测试预期值时,我仍然会遇到竞争条件。
不仅如此,当它使用 getActivity() 重新创建 Activity 时(当第一个竞争条件没有发生或我注释掉断言时),它只会返回与我刚刚完成的完全相同的对象!我可以说是因为我登录this
了我的 onXXX...() 方法。
这与方向旋转/键盘滑动应用程序生命周期不同,它总是创建一个新的 Activity 对象。
那么如何测试这种破坏/轮回场景呢?