为什么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相关推荐

  1. 两个onCreate方法?你真的了解onCreate()么?

    Activity的onCreate方法一直是我们编写一个activity最先重载的方法.细心的小伙伴在编写代码的时候回看到这样一幕: 咦,这里怎么会有两个onCreate提供给我们重载?选择困难症患者 ...

  2. 两个onCreate()方法

    问题 前几天写一个Activity的时候,发现出来的是一个空界面,也不报错.这样心态就很崩嘛,后来一个个在onCreate方法中打印信息,发现onCreate方法根本就没有执行-.然后发给学长看了下, ...

  3. Android Developers:Activities

    Activity Activity是应用程序的组件,它提供了一个屏幕 ,用户可以与之互动,以做一些事情,如拨打电话,拍照发送电子邮件,或查看地图.每个Activity会提共一个窗口,在其中绘制它的图形 ...

  4. Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

    App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候会更加频繁 ...

  5. Android 后台杀死及恢复的机制

    App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候,经常会遇 ...

  6. 利用onSaveInstanceState()方法保存Activity状态

    2019独角兽企业重金招聘Python工程师标准>>> Activity里的onSaveInstanceState()方法,虽然系统会自动调用它来保存Activity的一些数据,但当 ...

  7. 【常见问题】Can not perform this action after onSaveInstanceState

    onSaveInstanceState是干什么的呢? 通过该方法保留的实例状态数据,然后借助onCreate(Bundle) or onRestoreInstanceState(Bundle),我们可 ...

  8. 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析

    作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083 一. 相关方法简介 1. 状态保存方法示例 p ...

  9. onSaveInstanceState和onRestoreInstanceState触发的时机

    onSaveInstanceState和onRestoreInstanceState触发的时机 博客分类: android拾遗 当某个activity变得"容易"被系统销毁时,该a ...

最新文章

  1. Vmware 虚拟机提示:无法打开磁盘***.vmdk 无法启动虚拟机 解决办法
  2. pytorch教程龙曲良21-25
  3. 1096 Consecutive Factors (20 分)_24行代码AC
  4. 内存的工作原里(二)
  5. 在Nutz中给Druid配置数据库加密
  6. VR线下体验店群雄并起,超级队长为何能靠IP突围?
  7. 最优化方法:拉格朗日乘数法(转)
  8. 实用软件资源下载地址集合
  9. 电路交换,分组交换,报文交换
  10. elementui生产环境图标加载时偶而乱码
  11. 回收戴尔R740 R740XD - CSDN
  12. 武音硕士研究生《计算机音乐作曲》培训,武汉音乐学院2013年硕士研究生招生计算机音乐作曲科目考试大纲及参考书目...
  13. 人月神话(三)——没有银弹
  14. FaceBoxes论文阅读
  15. PDF电子签名申请与设置方法
  16. 面试进行曲之技术面试(项目经验)
  17. 文件服务器 小文件,小型文件服务器
  18. 【工具】fis3 - 使用教程(01)
  19. S2B2C社交电商系统怎么开发?
  20. 【翻译】SECS GEM系列之十二:消息日志

热门文章

  1. Windows 2003服务器维护的几个技巧
  2. 一次挂死(hang)的处理过程及经验
  3. modlesim使用
  4. 代码段、数据段、bss段
  5. 电脑如何格式化_分别手把手教你在Windows和mac上格式化磁盘
  6. 想学Python,梦雅给你指一条明路!
  7. rockmq运维指令_RocketMQ运维监控
  8. python垂直输出hello_python - 我如何获得直方图以垂直输出数据? - SO中文参考 - www.soinside.com...
  9. 简单介绍Python中异常处理用法
  10. 关于学习Python的一点学习总结(39->导入模块)