您的位置:首页 > 移动开发 > Android开发

android开发艺术探索 学习笔记(一) Activity生命周期全面分析

2017-06-10 13:32 561 查看
看完郭霖的<<第一行代码>>入了个门

想更加进阶的学习下android开发艺术探索

开个博客做做笔记加深自己的学习

一:正常Activity周期

1.onStart 和 onResume 、onStop 和 onPause 的区别

onStart 和 onResume 的状态都是已经可见,区别在于Activity是否能与用户交互,也就是是否在前台.
onStart 时Activity已经可见,但是不能与用户交互,而onResume可以。
onStop 和 onPause也是如此


2.Activity总是在上个Activity(也就是栈顶的Acitivity)先调用onPause后才开始创建

前一个Acitivity-->下一个Activity的过程:
前onPause-->后onCreate-->后onStart-->后onRemuse-->前onStop


所以,我们尽量不要再onPause中有耗时操作,会影响到下一个Activity切换到前台的过程。可以在onStart中操作。

二.异常Activity周期

1.当Activity被因为特殊情况,被杀死然后重新创建会调用onSaveInstanceStaSte 和 onRestoreInstanceState.

①  onSaveInstanceStaSte 是用于保存窗口当前状态,以Bundle的对象储存。
保存下来的状态,在Acitivity重新创建时传递给onRestoreInstanceState和onCreate方法。
②  onRestoreInstanceState的调用时机在onCreate之后。
③  状态保存机制:
由Activity发出,然后依次向下元素调用onSaveInstanceStaSte 。直至最后的子View。
④  当onRestoreInstanceState被调用那么Bundle一定有值,onCretea要判断Bundle是否为空。


2.系统回收资源时杀死Activity所在进程的优先级

前台<显示但不再前台<后台(已执行onStop)


所以,后台任务最好放在Server中运行,缺少四大组件的进程,很容易被系统杀死。

3.被系统杀死后不重新创建

可以给Acitivity的configChanges属性添加"orientation"值
多个值可以用"|"符号连接
常用的有:locale(一般指系统语言改变),keyboardHidden(键盘的可访问性发生改变),orientation(屏幕旋转)
当SDK版本大于13,屏幕旋转时要加上"screenSize"值


没有重新创建后,也不会调用onSaveInstanceStaSte 和 onRestoreInstanceState来储存和恢复数据,取而代之的是onConfigurationChanged方法,这时候可以做一些自己的特殊处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android