Activity学习

学习《Android开发艺术探索》第一章,整理以便以后学习。

1.Activity的生命周期
1.1典型情况下的生命周期分析

onCreate:表示Activity正在创建,做一些初始化工作:setContentView去加载界面布局资源,初始化Activity所需数据等。
onStart:表示Activity正在启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法与用户交互。
onResume:表示Activity已经可见,并且出现在前台并开始活动。
onPause:表示正在停止,正常情况下,紧接着onStop就会被调用。存储数据、停止动画等动作,注意不能太耗时, onPause先执行完新Activity的onResume才会执行
onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时。
onDestroy:表示Activity即将销毁,做一些回收工作和最终的资源释放。
onRestart:表示Activity正在重新启动,当当前Activity从不可见重新变成可见状态,onRestart就会调用。

onStart与onResume区别、onPause和onStop区别 :onStart与onStop是从Activity是否可见来回调,onResume和onPause是从Activity是否位于前台。

1.2异常情况下的生命周期分析
情况1:资源相关的系统发生改变导致Activity被杀死并重新创建
onSaveInstanceState保存当前Activity状态,onStop之前和onPause没有既定的时序关系
当Activity被重新创建后,系统调用onRestoreInstanceState,调用在onStart之后
总结:系统只在Activity异常终止的时候才会调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据
情况2:资源内存不足导致低优先级的Activity被杀死
Activity优先级:前台Activity、可见但非前台、后台

2.Activity的启动模式
2.1Activity的LaunchMode
四种启动模式:standard、singleTop、singleTask和singleInstance
standard:标准模式,这也是系统的默认模式。每次启动一个Activity都会重新穿件一个新的实例。standard模式的Activity默认会进入启动它的Activity所属的任务栈。
singleTop:栈顶复用模式。新Activity已经位于任务栈的栈顶,不会被重新创建,同时它的onNewIntent方法会被回调,不在栈顶需要重建。
singleTask:栈内复用模式,单实例模式。只要Activity在一个栈中存在,多次启动不会重建,把该Activity调到栈顶,系统会回调其onNewIntent。如果不存在会重建。
singleInstance:单实例模式。加强的singleTask模式,具有此模式的Activity只能单独地位于一个任务栈中。

TaskAffinity:任务相关性,标识了一个Activity所需要的任务栈的名字,默认为应用的包名,也可单独指定。
TaskAffinity需要和singleTask启动模式或者allowTaskReparenting属性配对使用。

指定启动模式:
1.通过AndroidMenifest为Activity指定启动模式:android:launchMode="singleTask"
2.通过Intent中设置标识位:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2.2Activity的Flags
FLAG_ACTIVITY_NEW_TASK:singleTask
FLAG_ACTIVITY_SINGLE_TOP:singleTop
FLAG_ACTIVITY_CLEAR_TOP:singTask
FLAG_ACTIVITY_NO_HISTORY

清空任务栈
clearTaskOnLaunch
finishOnTaskLaunch
alwaysRetainTaskState

3、IntentFilter的匹配规则
IntentFilter过滤信息有:action、category、data
一个Intent同时匹配action类别、category类别、data类别才算完全匹配
一个Acitvity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。
action:Intent中的action存在且必须和过滤规则中的其中一个action相同
category:可以没有category,一旦有category,不管有几个,每一个都要能够和过滤规则中的任何一个category相同
data:和action类似

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值