Android开发艺术探索学习笔记1——Avtivity生命周期和启动模式

Android开发艺术探索学习笔记——Avtivity生命周期和启动模式

Activity生命周期

正常情况下的生命周期:

Android开发艺术探索学习笔记1——Avtivity生命周期和启动模式_第1张图片

Activity启动中的核心对象:

1、      Instrumentation:一个辅助类。作用:1、创建application2、管 理生命周期 3、启动activity

2、      ActivityThread:这是一个类而非线程,里面的main方法是主线程的入口。

3、      ApplicationThread:一个实现了Binder的子类,存在的目的是和AMS通信。

异常情况下的生命周期:

1、      旋转屏幕

系统会自动调用onSaveInstanceState和onRestoreInstanceState

2、      内存不足

销毁顺序:后台Activity à可见但非前台Activityà前台Activity

 

Activity的启动模式

四种启动模式:

Standard、singleTop、singleTask、SingleInstance。

重点是关注栈和的关系。

Standard启动:ABCD,启动standard的D为ABCDD

singleTop启动:ABCD,启动SingleTop的D为ABCD,顶上的若有则不重建。

SingleTask启动:ABCD,启动SingleTask的A

1、      为A寻找想要的stack,没有就创建

android:taskAffinity="任务栈名"

 

2、有就clearTop,把A之前的清掉

SingleInstance启动:是加强版本SingleTask,具备了SingleTask的所有属性外,它极为排外,有它在则之后的所有Activity都不会新建,除非被销毁。

 

前台任务栈和后台任务栈:

通过android:taskAffinity="新包名"来开启新的任务栈,然后后台就会有前台任务栈和后台任务栈。

Android开发艺术探索学习笔记1——Avtivity生命周期和启动模式_第2张图片

前台任务栈:AB 后台任务栈为CD;当打开D的时候任务栈会合并为ABC。

Activity的Flags

设置启动模式:

FLAG_ACTIVITY_NEW_TASK:

singleTask模式。

FLAG_ACTIVITY_SINGLE_TOP:

SingleTop模式。

FLAG_ACTIVITY_CLEAR_TOP:

具有clearTop属性的启动。

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:

将activity排除出栈。

InterFilter的匹配:

匹配的标签有:action、category、data

action:

一个过滤规则中可以有多个action,只要任何一个action相同即可匹配成功。

category:

category可以没有,但是一旦有,就需要每个都匹配才行

data:

由两部分组成:

mimeType(资源类型)和URI(全局资源标识符)

 

 

 

你可能感兴趣的:(读书笔记)