84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我的程序比如一共有三个Activity, ABC,运行后首次打开肯定是A(也就是主界面),在A的界面中点击Button跳转到B,在B界面停留了一会,然后我就锁屏,大概过了20分钟吧,我解锁一看 出了问题了,解锁之后的界面显示的是A,而不是B,并且A上面的数据都没了,集合中的数据都没了,这是咋回事???求解答!!! 并且我的小米手机6.0的系统没事,在长的时间也没问题,4.xx的手机就会出现这个问题。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
这是因为你的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。