Activity的生命周期与启动模式

(1)生命周期要点

一.典型情况下:

(1)onCreat:

 主要做一些初始化工作,如 
 加载配置布局
 管理fragment
 对activity之前的状态进行恢复(如果存在)
 最后调用application的dispatchActivityCreated方法进行创建管理

(2)onRestart:

 当activity由不可见重新到可见状态会调用onRestart
 主要工作就是将一个boolean变量mCalled置为true

(3)onStart:

 activity可见但不可交互
 设置一些状态标志位和参数
 处理一些Fragment的操作

(4)onResume:

 已经可见并可以与之交互
 置于前台

(5)onPause:

 正在停止,可见但不可交互
 可以做一些停止动画,数据存储的操作,不应耗时太多

( 6 ) onStop :

 即将停止
 可以做一些稍微重量级回收操作,仍然不建议太过耗时

( 7 ) onDestory:

 即将被销毁
 回收工作,资源释放

二.特殊情况(配置改变或者被杀死导致activity重新创建)

会调用onSaveInstanceState方法来保存activity当前状态,可以通过重写该方法来做一些状态或数据的保存,在onCreat或onRestoreInstance中获取我们保存的信息。注意在onCreat中要进行判空处理,后者不需要,因为onRestoreInstance只要执行了,其中的值一定会存在。
如果一个进程中没有四大组件在执行,那么此进程很快就会被杀死,所以进行后台工作处理的时候,应尽量放在service中进行,因为service有一定的优先级,能够保证任务顺利的进行。
通过对acctivity的android:configChanges属性进行配置,可以决定当那些配置改变的时候activity不会被重新创建。(如横竖屏的切换)

(2)启动模式要点

一.四种启动模式

standard:依次入栈,返回弹出,栈顶呈现于前台
singleTop:若栈顶存在请求启动的activity,则复用此activity,回调onNewIntent方法。若不在栈顶或者不存在于栈中,则新建实例入栈。
singleTask:若栈中存在该实例,则该实例置顶,上方的activity全部弹出,回掉onNewIntent方法。若不存在,则新建实力入栈。若请求栈不存在,则先创建栈,在创建实例入栈。
singleInstancce:新建栈只存储该单一实例,后续创建该activity将不会产生新的实例。若创建其他activity则回到旧站或新建栈。

二.其他相关点

activity所需要的栈的名字由参数TaskAffinity标识,默认为该activity所在应用的包名。我们可以为每个activity的TaskAffinity指定不同的值来确定它需要的栈,但是该值不能于包名相同。

指定启动模式的两种方式:在AndroidMenifest中指定,也可以在Intent中设置标志位来指定其启动模式。
后者优先于前者。作用范围差异:前者无法为其指定FLAG_ACTIVITY_CLEAR_TOP标志,后者无法为其设定singeInstance启动模式。

三.intentFilter的匹配规则(匿名启动)

action: action存在且必须与过滤规则中的一个相同,action区分大小写。
category:可以不存在,但若存在,则每条category必须存在于过滤规则中。
data:必须存在且完全匹配过滤规则中的某一条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值