有关Activity生命周期以及状态的保存操作的选择

来源:互联网 发布:使命召唤ol自由数据 编辑:程序博客网 时间:2024/05/29 11:39
有这么一个问题:

对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行?

选项有onPause,onCreate,OnResume,onStart

答案是选第四个:onStart

然后就要问,为什么呢?

先来一张图:


这要从用户的选择来说了:

        1.用户想要退出

        2.用户只不过是把他放到了后台,但是内存不足,系统自己把他给销毁了

如果是第一种,用户自己退出,那么用户想要的是再打开程序的时候,是一个新开始的状态,而不是保存起来的状态,那么它会onPause,onStop,onDestroy,然后再去onCreate。

如果是第二种,用户希望自己再打开这个页面的时候,还是原来的状态(因为在后台它的状态也可能会改变的),那如果我们选择onPause的时候,当这个activity重新回到顶端的时候,我们保存的状态就可能已经是改变过的了,当再调用onResume的时候,出现的是改变过的,不符合用户的要求。而是因为当我们将当前activity放到后台的时候,这个activity可能因为内存原因被系统杀死(注意:是系统杀死的,它首先会去执行onSaveInstanceState来保存状态,然后onPause,onStop),这时当用户切换到这个activity的时候,它会去执行onRestart,onStart,onResume来让这个activity运行起来,至于为什么不是onResume,而是onStart,是因为在onStart与onResume之间,还有一个onRestoreInstanceState,这个方法可以恢复一些由onSaveInstanceState保存的临时数据。(如果我们直接保存在onResume的时候,在那么恢复的数据会不会没地方放啊尴尬、、这里不知道对不对,请各位大牛指正)

参考:

http://zhidao.baidu.com/link?url=tM2BBc7_grov34k4zcHjA7uNH-QemqZ39W_veR0A5Pa7SUHjh1ud7izuNPI_CgRTqd-7phszNgX2yq5g9Ifc4a

http://blog.csdn.net/liuhe688/article/details/6733407

http://www.cnblogs.com/gisdream/archive/2013/07/08/3177432.html

有错的地方希望各位大牛告知,刚学三个月,好多不懂,再次请各位发现错误回复指正,拜谢

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大一数学挂科怎么办 大学体育课挂了怎么办 大一考试挂科怎么办 一年级孩子考试不及格怎么办 孩子一年级数学不及格怎么办 一年级孩子考试紧张怎么办 健身动作不标准怎么办 足球赛踢平了怎么办 踢球指甲淤血了怎么办 初中一年级成绩差怎么办 着火了怎么办小班教案 小孩爱玩游戏怎么办 幼儿上学哭闹老师怎么办 孩子不喜欢上幼儿园怎么办 幼儿喜欢脱鞋怎么办 幼儿在教室乱跑怎么办 转学学校不接收怎么办 留守儿童成绩差怎么办 感冒鼻孑堵咳嗽哮喘怎么办 二年级数学报怎么办 不敢翻前滚翻怎么办啊 大学全挂了怎么办 幼儿园热了怎么办教案 幼儿园小班热了怎么办教案 高考艺术生色弱怎么办 雾眉后出现白棱怎么办 lol皮肤重复了怎么办 怕篮球砸到怎么办 前滚翻向一侧偏怎么办 大腿肌肉比较发达怎么办 学计算机老了怎么办 新生儿头尖尖的怎么办 手抻筋了很疼怎么办 led灯盘上就坏了一颗灯怎么办 芯片灯坏了怎么办 太阳能板电压不够怎么办 激光电到眼睛怎么办 修脚店生意不好怎么办 led吊灯变暗闪烁怎么办 led吊灯一半闪烁怎么办 led灯总是闪烁怎么办