onSaveInstanceState与onRestoreInstance
为什么80%的码农都做不了架构师?>>>
当Activity变得容易被系统销毁的时候,什么叫容易被销毁呢, 比如Activity停留在stop状态且系统内存不足的时,
这时候系统会自动调用onSaveInstanceState(Bundle outState)方法来临时保存Activity的一些数据,也可以自己重写此方法,
保存一些自己想保存的数据,比如视频的播放进度等。
如果Activity是用户主动销毁,如按了back键退出activity或是调用了activity的finish方法等得时候,系统是不会执行
onSaveInstanceState方法。
一下操作可能会执行onSaveInstanceState方法 具体还需自己写个demo验证
1.当用户按下HOME键时
2.长按HOME键,选择运行其他的程序时
3.按下电源按键(关闭屏幕显示)时
4.从activity A中启动一个新的activity时
5.屏幕方向切换时,例如从竖屏切换到横屏时
在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,
所以onSaveInstanceState一定会被执行
总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)
onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行。
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。
@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);if(savedInstanceState!=null && savedInstanceState.getString("currentposition")!=null){System.out.println(""+savedInstanceState.getString("currentposition"));}}@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stuboutState.putString("currentposition", "当前播放了5分钟"); super.onSaveInstanceState(outState);}
转载于:https://my.oschina.net/qenter/blog/632462
onSaveInstanceState与onRestoreInstance相关推荐
- 两个onCreate方法?你真的了解onCreate()么?
Activity的onCreate方法一直是我们编写一个activity最先重载的方法.细心的小伙伴在编写代码的时候回看到这样一幕: 咦,这里怎么会有两个onCreate提供给我们重载?选择困难症患者 ...
- 两个onCreate()方法
问题 前几天写一个Activity的时候,发现出来的是一个空界面,也不报错.这样心态就很崩嘛,后来一个个在onCreate方法中打印信息,发现onCreate方法根本就没有执行-.然后发给学长看了下, ...
- Android Developers:Activities
Activity Activity是应用程序的组件,它提供了一个屏幕 ,用户可以与之互动,以做一些事情,如拨打电话,拍照发送电子邮件,或查看地图.每个Activity会提共一个窗口,在其中绘制它的图形 ...
- Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制
App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候会更加频繁 ...
- Android 后台杀死及恢复的机制
App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候,经常会遇 ...
- 利用onSaveInstanceState()方法保存Activity状态
2019独角兽企业重金招聘Python工程师标准>>> Activity里的onSaveInstanceState()方法,虽然系统会自动调用它来保存Activity的一些数据,但当 ...
- 【常见问题】Can not perform this action after onSaveInstanceState
onSaveInstanceState是干什么的呢? 通过该方法保留的实例状态数据,然后借助onCreate(Bundle) or onRestoreInstanceState(Bundle),我们可 ...
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083 一. 相关方法简介 1. 状态保存方法示例 p ...
- onSaveInstanceState和onRestoreInstanceState触发的时机
onSaveInstanceState和onRestoreInstanceState触发的时机 博客分类: android拾遗 当某个activity变得"容易"被系统销毁时,该a ...
最新文章
- Vmware 虚拟机提示:无法打开磁盘***.vmdk 无法启动虚拟机 解决办法
- pytorch教程龙曲良21-25
- 1096 Consecutive Factors (20 分)_24行代码AC
- 内存的工作原里(二)
- 在Nutz中给Druid配置数据库加密
- VR线下体验店群雄并起,超级队长为何能靠IP突围?
- 最优化方法:拉格朗日乘数法(转)
- 实用软件资源下载地址集合
- 电路交换,分组交换,报文交换
- elementui生产环境图标加载时偶而乱码
- 回收戴尔R740 R740XD - CSDN
- 武音硕士研究生《计算机音乐作曲》培训,武汉音乐学院2013年硕士研究生招生计算机音乐作曲科目考试大纲及参考书目...
- 人月神话(三)——没有银弹
- FaceBoxes论文阅读
- PDF电子签名申请与设置方法
- 面试进行曲之技术面试(项目经验)
- 文件服务器 小文件,小型文件服务器
- 【工具】fis3 - 使用教程(01)
- S2B2C社交电商系统怎么开发?
- 【翻译】SECS GEM系列之十二:消息日志
热门文章
- Windows 2003服务器维护的几个技巧
- 一次挂死(hang)的处理过程及经验
- modlesim使用
- 代码段、数据段、bss段
- 电脑如何格式化_分别手把手教你在Windows和mac上格式化磁盘
- 想学Python,梦雅给你指一条明路!
- rockmq运维指令_RocketMQ运维监控
- python垂直输出hello_python - 我如何获得直方图以垂直输出数据? - SO中文参考 - www.soinside.com...
- 简单介绍Python中异常处理用法
- 关于学习Python的一点学习总结(39->导入模块)