两个onCreate()方法
问题
前几天写一个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()方法相关推荐
- 两个onCreate方法?你真的了解onCreate()么?
Activity的onCreate方法一直是我们编写一个activity最先重载的方法.细心的小伙伴在编写代码的时候回看到这样一幕: 咦,这里怎么会有两个onCreate提供给我们重载?选择困难症患者 ...
- Android 在onCreate()方法中获取控件宽高值为0解决方案
大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...
- android中oncreate方法,android开发之onCreate( )方法详解
这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...
- 解析Activity中的onCreate方法
我们在写一个自己的Activity的时候需要注意: 1.都必须extends Activity(或者其子类): 2.必须在方法onCreate中存在一条这样的语句:super.onCreate(也就是 ...
- (最新react-native-0.59.5) 如何将ReactNative项目集成到现有得Android项目中(两种实现方法之一)
背景:最近在学习React-Native相关的知识,有个需求,如果已经存在一个成熟的Android 或者 IOS项目,如何实现在后续的开发中用RN来实现部分功能.再此我只是讲解一下Android de ...
- android 毫秒 计时器,Android时分秒计时器的两种实现方法
可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...
- android oncreate调用,Android app启动activity并调用onCreate()方法时都默默地干了什么?...
在AndroidManifest.xml文件中的元素中有这么两句: 当写好的应用发布到手机上之后,当双击"APP"应用的图标时,系统会将这个点击时间包装成一个Intent,该Int ...
- Activity的onCreate方法
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setC ...
- android studio oncreate,android studio怎样实现 oncreate方法
匿名用户 1级 2016-03-31 回答 千峰扣丁学堂Android开发为您回答: 在AndroidManifest.xml文件中的元素中有这么两句: < /intent-filter> ...
最新文章
- for语句内嵌例题与个人理解
- codeblocks安装及使用教程(手把手傻瓜式教学)
- [Warning] TIMESTAMP with implicit DEFAULT value is
- SimBERTv2 融合检索和生成的RoFormer-Sim模型
- java单线程循环调度_Java基础篇之Java线程模型
- BC:带你温习并解读《中国区块链技术和应用发展白皮书》—概述
- 让 WPF 的 RadioButton 支持再次点击取消选中的功能
- python3导入模块原理_Python模块导入机制与规范
- Method-Swizzling实战-实现iOS原生网络请求性能采集
- suse linux如何重置密码忘记,SUSE Linux忘记root密码的处理办法
- 个人品牌这个事情,适用于长期主义者
- 26.MySQL 锁
- uclient和thinkphp的class db的冲突
- 如何更改Apple Watch的方向
- Android 获取毫秒时间戳
- html文字发亮_css实现发光文字及一点点js特效
- 单片机 c语言 可控硅,单片机控制可控硅.doc
- VR学习(Demo)以及在Unity3D上的项目
- Android 高德地图黑屏定位,Android Fragment集成高德地图黑屏的问题解决方案
- 改进YOLOv5系列:10.最新HorNet结合YOLO应用首发! | 多种搭配,即插即用 | Backbone主干、递归门控卷积的高效高阶空间交互高效