在 Activity 单元测试中,我如何模拟 Activity 生命周期事件。

我可以在现有 Activity 上调用工具的callActivityOn ...方法,但是如何触发 Activity 重新创建,以便 Activity 的OnCreate获取具有已保存状态的 bundle 包

最佳答案

我发现此代码导致创建新的 Activity :

myActivity.finish();
setActivity(null);
myActivity = getActivity();

但这不会导致调用onSaveInstanceState。因此,例如,要测试在 View 方向更改后是否正确创建了 Activity ,则应执行以下测试:
private mInstrumentation = getInstrumentation();
...
final Bundle outState = new Bundle();
mInstrumentation.callActivityOnSaveInstanceState(mActivity, outState);
mActivity.finish();
setActivity(null);
mActivity = getActivity();
runTestOnUiThread(new Thread() {
    @Override
    public void run() {
        mInstrumentation.callActivityOnRestoreInstanceState(mActivity, outState);
    }
});

08-03 18:49