两个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> ...
最新文章
- Leetcode 219. 存在重复元素 II 解题思路及C++实现
- 监控路由器虚拟服务器,远程监控路由器虚拟服务器设置
- 进程间通信-Queue 消息队列 先进先出
- Xshell报错“The remote SSH server rejected X11 forwarding request.”
- JAVA如何比较两个数组是否相等?
- Linux命令总结(之二)Find
- Android第三十八天
- CSDN上传自己的资源赚积分教程
- Java如何进行Base64的编码(Encode)与解码(Decode)
- 为何不能直接拷贝软件安装好的目录运行
- Python的猜平均数一半游戏
- 测试第48届格莱美完全获奖名单『二』
- C语言银行账户管理系统
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 步步惊心,Zookeeper集群运维“避坑”指南
- 阿里巴巴JAVA代码规范二【Major】
- 铝巨人铝模软件_助力建筑工业化发展PKPM-LMB铝模设计软件正式发布
- Linux下vi使用手册
- fuz--2128(最长子串)
- 二叉树的非递归遍历详解
热门文章
- 常用的cmd命令与Linux命令
- ionic3 版本更新
- qsort的基本用法
- 西瓜书学习(task2)
- Ant Design中的表格中key的处理
- 通过API访问阿里云效Codeup代码库,检查某个文件是否存在更新并下载的方法,顺带介绍一下阿里云OpenAPI
- [Python]networkx入门
- Go 语言中 = 和 := 有什么区别
- uni-app笔记---HbuilderX快捷键
- cmd窗口执行cnpm报错记录:FullyQualifiedErrorId : UnauthorizedAccess或者因为在此系统上禁止运行脚本。有关详细信息,请参阅https。。