Android 锁屏后一段时间,解锁后出现问题

我的程序比如一共有三个Activity, ABC,运行后首次打开肯定是A(也就是主界面),在A的界面中点击Button跳转到B,在B界面停留了一会,然后我就锁屏,大概过了20分钟吧,我解锁一看 出了问题了,解锁之后的界面显示的是A,而不是B,并且A上面的数据都没了,集合中的数据都没了,这是咋回事???求解答!!! 并且我的小米手机6.0的系统没事,在长的时间也没问题,4.xx的手机就会出现这个问题。

阅读 8k
5 个回答

这是因为你的activity在后台的时候,由于手机内存不足,被回收掉,当你解锁的时候,系统会尝试帮你重启activity,正常情况下应该会首先恢复你的B activity,可能是由于你代码的某种原因(Crash)B activity被finish掉了,然后再恢复A activity,但是activity里面的数据会被回收掉,所以你的list里面东西就没了,你可以在activity的onSavedInstance方法中,把你activity里面一些关键的数据保存在bundle里面,这样当你的activity由于内存不足被回收的时候,这些数据会被保存下来,然后当页面恢复的时候,也就是重新创建了activity,在onCreate的参数中(bundle),你可以从bundle中拿到你保存的那些数据,记得要首先把bundle判断null,因为正常启动的bundle是null,除非是系统帮你恢复,并且你保存了bundle。

锁屏期间如果手机内存减少会导致系统回收不活跃的Activity的
如果你确定不是因为抛出异常导致B页面崩溃, 那么应该就是Activity被回收了, 低版本的手机通常可用内存也相对少一点.

恢复数据可以查看'onSaveInstanceState'相关资料, 随便百度就好了

应该是锁屏或者解锁过程中应用crash了重启,看一下相关activity的日志就好了

善用Activity的生命周期

在后台的时候如果内存不足是会被回收掉的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏