除了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方法中做数据还原。

 

最新文章

  1. linux Mint 安装tomcat8
  2. native vlan(本征VLAN)
  3. [Codeforces677B]Vanya and Food Processor(模拟,数学)
  4. LeetCode Binary Tree Level Order Traversal (按层收集元素)
  5. python模拟登录人人网
  6. zookeeper系列(一)安装
  7. 1、Window10 Electron 开发环境搭建
  8. dedecms 修改标题长度可以修改数据库
  9. C++汉诺塔递归实现
  10. 五、VueJs 填坑日记之将接口用webpack代理到本地
  11. Fiddler - 工具配置及在ios抓取不了https的解决方法
  12. html/css学习笔记(一)
  13. jmeter 压力测试
  14. vue路由\导航刷新后:ative\localStorage\url截取参数
  15. 配置CentOS6.5的yum源
  16. Activity启动模式(lauchMode)
  17. Shell脚本 Hello World
  18. Python mysql-表的创建,删除和更新
  19. SQL2008关于权限的解释
  20. VS中的生成事件

热门文章

  1. C#中 什么是装箱和拆箱
  2. sqlserver游标使用和循环
  3. Kettle文本文件输出和输入控件使用中,换行符导致的问题处理
  4. Scala类型系统(sudden thought)
  5. Python格式化字符串--format
  6. 原生JS实现淘宝无缝轮播
  7. Android基础知识04—Activity活动之间传递数据
  8. 61、web框架
  9. 使用bitset实现毫秒级查询(二)
  10. Java8 新特性之Stream----java.util.stream