activity中onSaveInstanceState方法调用时机详解
2016-03-21 20:31
363 查看
转发请标明来源:/article/8669047.html
onSaveInstanceState什么时候调用?onSaveInstanceState()的调用时机:
在activity的一个生命周期中,onSaveInstanceState()并非一定调用。
正如官网对该方法的解释所说:“This method is called before an activity may
be killed so that when it comes back some time in the future it can restore its state. ” 在“可能被系统杀死”之前调用。suo的很准确啊,先明白一点:如果一个activityA不可能在后台被系统主动kill掉,那么就不会调用该方法(记着这句话,稍后会解释)。
那么回过头,什么时候activity“可能被系统杀死”呢?官网也是有明确说明的:
总结说就是:
onResume() 不会被杀。前台应用,系统是不会主动kill的。
onPause() HONEYCOMB(android3.0)之前,可能被杀;3.0之后不会被杀。
onStop() 可能被杀。
明确activity可能在生命周期中被杀的方法之后,根据上边说明便可知:
android3.0之前:onResume() -- [optional]onSaveInstanceState() -- onPause(),即调用onPause()之前,可能调用onSaveInstanceState()
android3.0之后:onPause() -- [optional]onSaveInstanceState() -- onStop(),即调用onStop()之前,可能调用onSaveInstanceState()
如上边特意提到一样,这里仍要注意“可能”,如果一个activityA不可能在后台被系统主动kill掉,那么就不会调用该方法。
比如一下逻辑:
activityA.startActivity(activityB)
activityA.finish()
A启动了B,但是A自己把自己finish了,也就是说系统不可能主动kill activityA了,因此虽然A的onPause()、onStop()被调用,onSaveInstanceState()方法也是不会调用到的。
那么同理,默认情况下在一个activity中,返回退出也是不会调用onSaveInstanceState()的。
验证一下(利用activity自动旋转会保存之前状态,并重新恢复的特点):
android2.3
android5.0
HomeActivity启动ActivityB,不finish自己:
HomeActivity启动ActivityB,finish自己:
转发请标明来源:/article/8669047.html
参考:http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)
onSaveInstanceState什么时候调用?onSaveInstanceState()的调用时机:
在activity的一个生命周期中,onSaveInstanceState()并非一定调用。
正如官网对该方法的解释所说:“This method is called before an activity may
be killed so that when it comes back some time in the future it can restore its state. ” 在“可能被系统杀死”之前调用。suo的很准确啊,先明白一点:如果一个activityA不可能在后台被系统主动kill掉,那么就不会调用该方法(记着这句话,稍后会解释)。
那么回过头,什么时候activity“可能被系统杀死”呢?官网也是有明确说明的:
总结说就是:
onResume() 不会被杀。前台应用,系统是不会主动kill的。
onPause() HONEYCOMB(android3.0)之前,可能被杀;3.0之后不会被杀。
onStop() 可能被杀。
明确activity可能在生命周期中被杀的方法之后,根据上边说明便可知:
android3.0之前:onResume() -- [optional]onSaveInstanceState() -- onPause(),即调用onPause()之前,可能调用onSaveInstanceState()
android3.0之后:onPause() -- [optional]onSaveInstanceState() -- onStop(),即调用onStop()之前,可能调用onSaveInstanceState()
如上边特意提到一样,这里仍要注意“可能”,如果一个activityA不可能在后台被系统主动kill掉,那么就不会调用该方法。
比如一下逻辑:
activityA.startActivity(activityB)
activityA.finish()
A启动了B,但是A自己把自己finish了,也就是说系统不可能主动kill activityA了,因此虽然A的onPause()、onStop()被调用,onSaveInstanceState()方法也是不会调用到的。
那么同理,默认情况下在一个activity中,返回退出也是不会调用onSaveInstanceState()的。
验证一下(利用activity自动旋转会保存之前状态,并重新恢复的特点):
android2.3
android5.0
HomeActivity启动ActivityB,不finish自己:
HomeActivity启动ActivityB,finish自己:
转发请标明来源:/article/8669047.html
参考:http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)
相关文章推荐
- 数据库连接工具类BaseDao
- 类属性和实例属性名字冲突怎么办
- Hessian 调用实例
- tcpdump抓包以及port查看的一些操作
- 3月21号科目二考试总结
- 制作短信发送器
- scoped _ptr的模拟实现与解析
- Gulp:任务自动管理工具
- 查看Android任意可执行文件的工具ClassyShark
- MySQL 性能调优的10个方法
- PHP学习(三)----面向对象
- 双向链表的基本操作
- IntelliJ IDEA 中文乱码问题解决办法
- php开发中一些前端知识杂总
- 如果一个事情总在同一个地点停留,就是没有执行效率
- 【转】Android Studio下加入百度地图的使用 (一)——环境搭建
- Android指纹识别动画(Android's animated fingerprint)库:Swirl
- 前端构建工具gulpjs的使用介绍及技巧
- java 编程思想 第五章 初始化与清理
- 不用调试就能查看Android类中的数据流