文档章节

android 学习

狗哥曾年轻过
 狗哥曾年轻过
发布于 2016/01/01 22:01
字数 546
阅读 10
收藏 1

在我们使用activity时,我们应该避免使用finish()或者finishActivity()(关闭其他之前打开的activity)来关闭一个activity,而是让系统自动调用他的生命周期来关闭这个activity,因为这样做有时会是用户体验变差。

如果之前的activity被完全kill掉或者finish掉,他就必须重建。

我们应该在activity的onCreated()方法中实现那些全局的东西,而在onDestory()方法中释放资源,比如说在onCreated()方法中创建一个线程来实现网络下载任务,而在onDestoryed()方法中关闭这个线程。

onPause()方法中的代码应该尽量简便,因为太复杂的代码会阻塞线程,使用户体验变差

控件的onSaveEnabled()方法或者xml中的android:saveEnabled来对控件进入销毁后的恢复

onSaveInstance()方法虽然会在activity销毁时保存一些ui的状态信息,但是它并不一定每次都会自动执行,因为我们应该在这个方法内保存一些临时变量而不是保存一些持久的变量,我们应该在onPause()中保存那些持久性的变量(比如说把数据存进数据库)

在设备的的配置改变后(比如说屏幕旋转,键盘可用性),系统会执行onDestory()方法后马上执行onCreated()方法,通常我们使用的最多的恢复数据的方式就是在使用onSaveInstance()方法和onRestoreInstanceState()(或者onCreated())方法来恢复数据

有时候我们通过一个activity来启动另外一个activity,这个时候我们会共用同个数据,这时候我们应该明白这两个activity中的生命周期,通过这些生命周期来保证数据的正确性,(如A启动B,系统会先调用A的onPause()方法(之后不一定调用onStopped()方法,只有在A完全被B覆盖的时候才会调用这个方法),然后才会调用B的生命周期方法,因此我们应该在A的onPause()方法中对数据进行写入,而不是onStopped())



© 著作权归作者所有

狗哥曾年轻过
粉丝 1
博文 5
码字总数 1930
作品 0
私信 提问

暂无文章

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
45分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
49分钟前
7
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
50分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
50分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部