ANDROID基础ACTIVITY篇之ACTIVITY的生命周期(二)
除了Activity的七大生命周期方法外外,还有两个相当重要的方法需要大家熟记那就是onSavelnstanceState()和onRestoreinstanceState()。
那么什么时候会调用这两个方法呢?
有这么几种情况,会使onSaveInstanceState方法执行:
1,当Activity 被系统而非人为的销毁前
2,当用户按下HOME键时。
这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。
3,长按HOME键,选择运行其他的程序时。
4,按下电源按键(关闭屏幕显示)时。
5,从activity A中启动一个新的activity时。
6,屏幕方向切换时,例如从竖屏切换到横屏时。
总而言之,onSaveInstanceState的调用遵循一个重要原则,那就是Activity是被系统而非人为的销毁,在这之前系统通过调用这个方法来让用户保存一些数据。
至于onRestoreInstanceState方法,它是用来对系统销毁后并重新创建的Activity进行数据还原操作的,数据一般保存在Bundle对象中。
需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行。
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。
最新文章
- linux Mint 安装tomcat8
- native vlan(本征VLAN)
- [Codeforces677B]Vanya and Food Processor(模拟,数学)
- LeetCode Binary Tree Level Order Traversal (按层收集元素)
- python模拟登录人人网
- zookeeper系列(一)安装
- 1、Window10 Electron 开发环境搭建
- dedecms 修改标题长度可以修改数据库
- C++汉诺塔递归实现
- 五、VueJs 填坑日记之将接口用webpack代理到本地
- Fiddler - 工具配置及在ios抓取不了https的解决方法
- html/css学习笔记(一)
- jmeter 压力测试
- vue路由\导航刷新后:ative\localStorage\url截取参数
- 配置CentOS6.5的yum源
- Activity启动模式(lauchMode)
- Shell脚本 Hello World
- Python mysql-表的创建,删除和更新
- SQL2008关于权限的解释
- VS中的生成事件