开发艺术探索--Activity生命周期和启动模式
2016-10-04 17:26
387 查看
第一章: Activity生命周期和启动模式
本章包括: 声明周期,启动模式及IntentFilter的匹配规则.生命周期
启动模式
IntentFilter
生命周期
典型情况下: 用户参与下,生命周期的改变异常情况下: 被系统回收或者Configuration改变重建
典型情况下
当用户按下Home后回来:
onPause -> onStop -> onRestart -> onStart ->onResume.
onStart和
onResume时
Activity已经可见,
`onStart还在后台,
onResume在前台.
onPause:
保存数据,停止动画等工作,但
不能太耗时.因为执行完才会打开新的
Activity
onStop:
稍微重量级的回收工作,也
不能太耗时.
如果
Activity采用了透明主题,那么不会回调
onStop.
onStart与onStop对应Activity
是否可见,
onResume与onPause对应Activity
是否在前台(多次调用).
onPause执行完后新的Activity的
onResume才会执行.见
ActivityStack#resumeTopActivityInnerLocked
ApplicationThread#scheduleLaunchActivity回调Activity的声明周期方法.
异常情况下
onSavedInstanceState在
onStop之前调用,和onPause没有既定时序关系.
onRestoreInstanceState在
onStart之后调用.需要在onCreate中进行判空处理.
View状态保存和恢复采用了委托的思想.
Activity->Window->ViewGroup
如果一个进程中没有四大组件执行,资源不足会很快被系统杀死,比较好的做法是将后台工作放到
Service中进行
"android:configChanges="orientation|screenSize":避免屏幕旋转时
Activity重建,这时候只会回调
onConfigurationChanged.
configChanges相关含义:activity
启动模式及Flags
Activity的四大启动模式,之前的总结 Activity任务栈及启动模式adb shell dumpsys activity: 获取activity堆栈信息.
IntentFliter
一个Activity可以有多个IntentFilter,只要
能匹配任何一组即可成功启动对应Activity
action: 有其一匹配即可,
action是一个字符串,区分大小写。
Intent中必须有一个action,且必须能够和过滤规则中的某个action相同
category: 可以没有,有则必有其一匹配.
可以没有
category,系统会默认加上
android.intent.category.DEFAULT
一旦有
category,不管有几个,每个都要和过滤规则中的 任何一个
category相同。
为了
activity能够接受隐式调用,最好加上
android.intent.category.DEFAULT这个
category.
data: 必须有一个完全匹配,
data有
mimeType和
URI组成,其中
URI包括:
scheme,host,port,path.
如果
data只有
mimeType而没有指定URI,则
URI默认值是
content和file
data中的
setData和
setType冲突,需使用
setDataAndType
隐式调用前最好使用
resolveActivity来判空(
加上MATCH_DEFAULT_ONLY)
系统建议使用
显示的方式来启动服务.
Intent-fliter的匹配规则对于
Service和
BroadcastReceiver也是同样的道理。
public abstract List<ResolveInfo> queryIntentActivities(Intent intent, @ResolveInfoFlags int flags); public abstract ResolveInfo resolveActivity(Intent intent, @ResolveInfoFlags int flags);
这两个方法,需要注意后一个参数 ,需要用
MATCH_DEFAULT_ONLY来匹配
android.intent.category.DEFAULT这个
category.
相关文章推荐
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (二)
- 【读书笔记】【Android 开发艺术探索】第1章 Activity 的生命周期和启动模式
- 【Android开发艺术探索读书笔记】 第一章 Activity的生命周期与启动模式
- Android开发艺术探索(一)Activity生命周期和启动模式
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (一)
- 笔记一 Android开发艺术探索之Activity的生命周期和启动模式
- Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)
- Android开发艺术探索--Activity生命周期和启动模式
- Android开发艺术探索阅读笔记之一:Activity的生命周期和启动模式
- <<Android 开发艺术探索>> 第一章 Actiivty的生命周期和启动模式
- android开发艺术探索 学习笔记(二) Activity的启动模式
- Android开发探索第一章 Activity生命周期及启动模式总结(三)
- Activity的四种启动模式--看Android开发艺术探索总结
- Android 开发艺术与探究 第一章 Activity 的生命周期和启动模式
- Android开发艺术探索笔记一:Activity的启动模式
- Android开发探索第一章 Activity生命周期及启动模式总结(一)
- Android开发艺术探索--第一章Acitivity的生命周期和启动模式
- Android开发探索第一章 Activity生命周期及启动模式总结(二)
- 开发艺术探索——生命周期和启动模式