Activity生命周期保存参数onSaveInstanceState()与onRestoreInstanceState()
2015-09-18 11:22
302 查看
在读android API Guides时看到关于Activity生命周期以及利用onSaveInstanceState()方法保存非持久数据,记录短暂的状态;笔者经过试验大致总结了:
首先,当开发者需要调用onSaveInstanceState()方法的情况是在用户没有明确操作退出应用,以及系统不能确定是否回收,合适回收,主要以下几种情况:
在当前avtivity按Home键
关闭屏幕显示
在当前Activity打开新的activity 以上情况均是: 用户没有明确要退出程序,关闭avtivty 系统也不能明确合适回收以及销毁activity
在这种情况android系统对于组件的设置会自动的调用onSaveInstanceState()方法保存记忆,比如checkbox的选择状态等等;
注意:但是如果view组件没有指定id,且程序在非用户明确退出操作的情况下,(例如屏幕的旋转)是不会保存view组件的状态改变。实际上,由于系统配置configuration改变,则activity会被销毁重新创建,则需要配合
onRestoreInstanceState()或者oncreat()中重新恢复装填。
当用户在activity 暂停以后,需要保存一些非持久的数据的时候可以通过回调onSaveInstanceState()方法去存储,在activity下次刷新重启或者创建的时候通过Bundle将数据拿出来。
实际上,avitivity生命周期中也会回调onSaveInstanceState()和onRestoreInstanceState();优化activity确保按照正常逻辑运行。对于存储的暂时数据,也可以通过调用oncreat()方法,判断传入的Bundle是否为空(初次启动为空,如果不判断,程序不能正常启动),不为空则可以从中用getXXX方法拿出数据。
首先,当开发者需要调用onSaveInstanceState()方法的情况是在用户没有明确操作退出应用,以及系统不能确定是否回收,合适回收,主要以下几种情况:
在当前avtivity按Home键
关闭屏幕显示
在当前Activity打开新的activity 以上情况均是: 用户没有明确要退出程序,关闭avtivty 系统也不能明确合适回收以及销毁activity
在这种情况android系统对于组件的设置会自动的调用onSaveInstanceState()方法保存记忆,比如checkbox的选择状态等等;
注意:但是如果view组件没有指定id,且程序在非用户明确退出操作的情况下,(例如屏幕的旋转)是不会保存view组件的状态改变。实际上,由于系统配置configuration改变,则activity会被销毁重新创建,则需要配合
onRestoreInstanceState()或者oncreat()中重新恢复装填。
当用户在activity 暂停以后,需要保存一些非持久的数据的时候可以通过回调onSaveInstanceState()方法去存储,在activity下次刷新重启或者创建的时候通过Bundle将数据拿出来。
实际上,avitivity生命周期中也会回调onSaveInstanceState()和onRestoreInstanceState();优化activity确保按照正常逻辑运行。对于存储的暂时数据,也可以通过调用oncreat()方法,判断传入的Bundle是否为空(初次启动为空,如果不判断,程序不能正常启动),不为空则可以从中用getXXX方法拿出数据。
> Bundle类是一个key-value数据结构,可以存取基本的数据类型。
相关文章推荐
- Nginx日志参数
- JQuery自定义动画animate方法
- Java中成员变量和局部变量的区别
- 【Flex布局】
- 生成二维码图片
- TextRank简介
- <一>Copy和mutableCopy——iOS开发的疑惑
- 深度链接(Deep-linking)是移动和网络之间缺失的链接
- iOS 9 Bitcode新问题集成第三方解决方案
- NameNode---Exception in namenode join
- 海格面试题总结
- matlab中文件的复制
- java.lang.NumberFormatException 错误及解决办法
- Django中错误:django.core.exceptions.ImproperlyConfigured: ***DEFAULT_INDEX_TABLESPACE解决方
- RS-485设计指南 (TI:SLLA272B-2008.05)
- java Map key value 取值的方法
- IOS动态类型isKindOfClass, isMemberOfClass
- Android基础入门教程——7.6.4 基于UDP协议的Socket通信
- Android 踩坑记录
- 数据结构之快速排序