84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
我的程序比如一共有三个Activity, ABC,运行后首次打开肯定是A(也就是主界面),在A的界面中点击Button跳转到B,在B界面停留了一会,然后我就锁屏,大概过了20分钟吧,我解锁一看 出了问题了,解锁之后的界面显示的是A,而不是B,并且A上面的数据都没了,集合中的数据都没了,这是咋回事???求解答!!! 并且我的小米手机6.0的系统没事,在长的时间也没问题,4.xx的手机就会出现这个问题。
这是因为你的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在后台的时候,由于手机内存不足,被回收掉,当你解锁的时候,系统会尝试帮你重启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。