android 基础知识 生命周期
2016-11-01 10:47
211 查看
1:Activity的生命周期的描述图1如下:
图1:activity 生命周期图
2:Activity生命周期的详细叙述:
(1):onCreate:
表示activity正在被创建,生命周期中第一个方法,可以做些初始化工作,setContentView,加载界面资源,初始化activity所需的数据!
(2):onRestart:
标识activity正在重新启动,一般情况下,activity从不可见状态变为可见状态时,onRestart就会被调用,一般情况下是由用户的行为导致的,比如用户按home键
切回到桌面或者用户打开了一个新的activity,此时当前的activity就会被暂停,
onPause和onStop被执行了,接着用户又回到了该界面。
(3):onStart:
表示该activity正在被启动,此时activity可见了,但是运行在后台,无法和用户进行交互。(4):onResume:
表示activity已经可见了,并且出现在前台并开始活动,onStart和onResume都表示activity可见,但是onStart时activity还在后台,onResume时activity显示在前台!
(5):onPause:
表示Activity正在被停止,正常情况下,紧接着onStop就会被调用,特殊情况下,如果这时候快速地回到当前的界面时,onResume就会被调用,这是一种极端情况,不容易被出现.正常情况下,此时可以存储写数据,停止动画等操作,
但是注意不能够太耗时,因为会影响到新的activity的展示,onPause必须先执行完,新的activity的onResume才会被执行!
(6):onStop:
表示即将被停止,此阶段可以做一些稍微重量级的一些回收工作,同样不能太耗时! (7):onDestroy:
表示即将被销毁,这是Activity生命周期中的最后一个回调,这里可以做一些回收工作和最终的资源释放!(8)额外提示:
同时有一些:onNewIntent:此调用和启动模式有关,onCreate和onStart不会被调用!onSaveInstanceState:
保存实例的状态 将当前的activity的状态保存到Bunddle参数中
onRestoreInstanceState:
恢复之前的实例的一些状态:从Bunddle参数中获取一些状态值!
(9)onStop时activity被系统回收:
当activity被系统回收,等再次打开时,生命周期和回调过程和(1)一样,只是生命周期一样,不代表所有的过程一样!(10):onStart和onResume,onPause和onStop有什么实质的不同:
onPause和onStop主要是从是否界面可见的角度来回调的,而onStart和onResume主要是从是否在前台的角度去描述的!(11)ActivityA跳转到ActivityB中的:A中的onPause先执行还是B中的onCreate,onStart,onResume先执行,以及A中的onPause和A的onStop有执行先后顺序吗?
结论:旧Activity中的onPause先执行成功之后,才会启动新Activity!3:异常情况下的生命周期:
3.1:资源相关的系统配置发生改变导致activity被杀死并重新创建!
默认情况下Activity的屏幕方向发生改变后,当前activity被销毁,重新创建。过程如图3.1所示:图3.1
注意:当前的Activity生命周期函数执onPause,onStop,onDestroy顺序执行,同时onSaveInstanceState在onStop之前被执行,
但是与onPause顺序执行不确定!继而会执行Activity的onCreate,onStart,以及onRestoreInstanceState函数,onResume函数!
注意:当系统配置发生改变时,导致activity被重新创建,怎么不让其重新创建,在资源清单文件中:
android:configChanges="orientation",其常用的“keyboardHidden”,“locale”
3.2:资源内存不足导致低优先级的activity被杀死!
3.3:onSaveInstanceState与onRestoreInstanceState相关原理:
当Activity有异常重新创建时,系统会默认保存当去的activity的视图结构,并且在重启activity时会为我们恢复这些数据,其实View和Activity一样,都有继承 onSaveInstanceState和onRestoreInstanceState,系统能够自动的为View进行恢复数据!
关于保存和回复View的层次结构,系统的工作流程是这样的:首先Activity被意外地终止时,
Activity会调用onSaveInstanceState函数去保存数据,继而Activity会去委托PhoneWindow去保存数据,
PhoneWindow又会委托DecordView去保存数据,最后DecordView又会一一通知子节点去保存数据,
这是一种典型委托思想!上层委托下层,父容器委托子容器!
相关文章推荐
- Android Activity学习 <一> Activity基础知识和生命周期
- Android基础知识--2.Activity的生命周期
- Android基础知识:Activity生命周期和Intent用法
- Android 基础知识---Activity生命周期
- android基础知识——android生命周期
- Android基础知识之四大组件Activity(二)一个Activity的生命周期?
- Android基础知识三(Activity生命周期)
- Android自定义控件基础知识----View的生命周期
- android基础知识复习(一)——对话框风格的Activity、Menu、Activity生命周期
- android基础知识---ActivityLifecycleCallbacks监听Activity们的生命周期
- Android 的生命周期基础知识
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- Android 基础知识之Intent
- Android 基础小知识
- android linux 基础知识总结
- Android Map开发基础知识学习笔记
- android linux 最全的基础知识总结
- android 基础知识
- Android之OpenGL ES基础知识篇
- android linux 基础知识总结