问题

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

一般我们都是选择第一个,那天我选了第二个,所以问题就出现了。
那么,第二个到底是用来干嘛的呢?为了清楚自己犯了什么错误,在网上了解了一下。

问题解决

Activity的onCreate()是编写一个activity最先重载的方法。
它是Activity整个生命周期中的第一个方法。我们的界面初始化,数据初始化等等,都会在这里面实现。

第一个参数 savedInstanceState

从字面上看saveInsanceState,是保存实例状态的。实际上,saveInsanceState也就是保存Activity的状态的。saveInsanceState中的状态数据是通过onsaveInsanceState方法中保存Activity的状态而来的。当一个Activity在生命周期结束前,会调用该方法保存状态。

第二个参数 persistentState

第一个参数当Activity在手机旋转,内存不足导致的后台自动销销毁时,再次启动可以通过onCreate方法中的savedInstance参数拿到我们的数据。
那当我们的手机异常关机的时候,例如手机过热自动关机,没电自动关机或者卡顿后强制重启,是否依然可以找回前台数据呢?
这就是我们第二个参数的作用,他实际上是一种数据持久化的Activity。

第二个参数的使用

首先,我们需要在Android 的清单文件的Activity中指定如下属性:

android:persistableMode="persistAcrossReboots"

接着重载onSaveInstanceState或者onRestoreInstance:

 @Overridepublic void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {super.onSaveInstanceState(outState, outPersistentState);}@Override
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {super.onRestoreInstanceState(savedInstanceState, persistentState);
}

onSaveInstanceState调用时机是当前Activity即将被销毁而还未被销毁的时候。而当系统调用了onRestoreInstance就表示这个Activity已经被销毁了。

两个onCreate()方法相关推荐

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

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

  2. Android 在onCreate()方法中获取控件宽高值为0解决方案

    大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...

  3. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

  4. 解析Activity中的onCreate方法

    我们在写一个自己的Activity的时候需要注意: 1.都必须extends Activity(或者其子类): 2.必须在方法onCreate中存在一条这样的语句:super.onCreate(也就是 ...

  5. (最新react-native-0.59.5) 如何将ReactNative项目集成到现有得Android项目中(两种实现方法之一)

    背景:最近在学习React-Native相关的知识,有个需求,如果已经存在一个成熟的Android 或者 IOS项目,如何实现在后续的开发中用RN来实现部分功能.再此我只是讲解一下Android de ...

  6. android 毫秒 计时器,Android时分秒计时器的两种实现方法

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

  7. android oncreate调用,Android app启动activity并调用onCreate()方法时都默默地干了什么?...

    在AndroidManifest.xml文件中的元素中有这么两句: 当写好的应用发布到手机上之后,当双击"APP"应用的图标时,系统会将这个点击时间包装成一个Intent,该Int ...

  8. Activity的onCreate方法

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setC ...

  9. android studio oncreate,android studio怎样实现 oncreate方法

    匿名用户 1级 2016-03-31 回答 千峰扣丁学堂Android开发为您回答: 在AndroidManifest.xml文件中的元素中有这么两句: < /intent-filter> ...

最新文章

  1. for语句内嵌例题与个人理解
  2. codeblocks安装及使用教程(手把手傻瓜式教学)
  3. [Warning] TIMESTAMP with implicit DEFAULT value is
  4. SimBERTv2 融合检索和生成的RoFormer-Sim模型
  5. java单线程循环调度_Java基础篇之Java线程模型
  6. BC:带你温习并解读《中国区块链技术和应用发展白皮书》—概述
  7. 让 WPF 的 RadioButton 支持再次点击取消选中的功能
  8. python3导入模块原理_Python模块导入机制与规范
  9. Method-Swizzling实战-实现iOS原生网络请求性能采集
  10. suse linux如何重置密码忘记,SUSE Linux忘记root密码的处理办法
  11. 个人品牌这个事情,适用于长期主义者
  12. 26.MySQL 锁
  13. uclient和thinkphp的class db的冲突
  14. 如何更改Apple Watch的方向
  15. Android 获取毫秒时间戳
  16. html文字发亮_css实现发光文字及一点点js特效
  17. 单片机 c语言 可控硅,单片机控制可控硅.doc
  18. VR学习(Demo)以及在Unity3D上的项目
  19. Android 高德地图黑屏定位,Android Fragment集成高德地图黑屏的问题解决方案
  20. 改进YOLOv5系列:10.最新HorNet结合YOLO应用首发! | 多种搭配,即插即用 | Backbone主干、递归门控卷积的高效高阶空间交互高效

热门文章

  1. 50部经典影片,你看过哪些
  2. 机器指令与微指令之间的关系
  3. 【面试技巧】你对我们公司了解多少
  4. 少儿机器人编程学习指南
  5. 初到北上广打拼的外地人,生活状态是怎样的?
  6. Windows10环境下设置播放器默认软件打开方式
  7. 计算机中的二进制实验报告,大学计算机实验报告(共5篇).doc
  8. 视频教程-爱上axure之 交互制作-Axure
  9. EDAthon2020-P4 Floorplanning问题 BSG + Simulated Annealing解决方案
  10. PHP简单MVC架构