今天遇到用户反映应用总是闪退。
现象:在MainActivity后,只要进入任何主进程相关的二级界面,都会导致应用闪退(注:不是崩溃引起的,只是闪退)
分析:1.看log日志,退出前有抛出异常,但查看该处代码发现异常已经被catch住,异常信息被打印出来而已。
2.怀疑是每个Activity实现时,其父类BaseActivity有干坏事,则重新自定义了一个Activity不继承自父类,发现现象仍存在,该Activity仍闪退。(vinney,thanks)
3.发现每次MainActivity的自定义的exitApp()都被调用了,设置断点,发现是由onDestory()发起的,而onDestory()则是由系统调用的。
4.怀疑每个Activity的onDestory()在从屏幕消失后都会被立即调用,写了个小demo,得到验证。开始怀疑是机子问题。
5.google关键字"三星 Activity 闪退"真相出来了,发一有笑点的帖子http://zhidao.baidu.com/question/493015963.html。至此定位原因。
原因:此三星设备中,有一个“开发者选项→不保留活动(用户离开后立即清除每个活动)”,即会导致进入从MainActivity离开后都会调用MainActivity.onDestory(),导致执行退出操作,闪退(edit by sodino)
恢复:取消掉“不保留活动”的选项即可

有没有即使勾选了"不保留活动"但app内能解决的方法?可以,在MainActivity处的onDestory()不调用退出应用操作。可能重写finish(),当代码明确调用finish()后再执行退出应用操作。但仍会有个缺点即为Activity.onDestory()后,从二级界面按返回键回到MainActivity时,会有一段短暂的黑屏,然后才恢复的情况。


[Android] App在三星某些机子上闪退:"不保留活动"_父类