测试Activity的onSaveInstanceState/onRestoreInstanceState

最近遇到一个应用崩溃问题,这个问题是由于在 ActivityonSaveInstanceState 中进行了数据的保存,然后在 onRestoreInstanceState 进行解析的时候出现崩溃。

实际测试的时候,发现当内存充足的时候,非常难稳定的诱发 ActivityonSaveInstanceState 事件。

早期的版本,可以通过 ActivityManagerNative.getDefault().setAlwaysFinish 来强制系统在 Activity 切换到后台之后,立即触发 onSaveInstanceState

参考代码如下:

但是遗憾的是,新系统比如 Android 8 等系统上,在真机环境中已经没办法通过上述的方法进行诱发了。系统会直接抛出异常,或者设置无效。

真机环境,可以尝试在 开发人员选项 中设置开启 “不保留活动” 按钮,如下图所示:

对于编写单元测试用例的情况来说,建议使用 AndroidX 引入的 ActivityScenario 来进行测试,参考代码如下;

目前测试发现,在真机上执行上述测试用例(Android 10),会在 ActivityScenario.launch(Activity.class);  的时候抛出超时异常,目前真机暂时没解决方法,建议在模拟器上执行测试用例。

可能的崩溃日志如下:

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注