在 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);
}
});