(Android基础)关于AMS

##关于管理Activty部分

重要的概念

ProcessRecord 进程数据类

当应用程序每请求启动一个新的进程,在Ams中就会有一个ProcessRecord,
ProcessRecord不是应用进程的实例,主要用于在Ams中记录对应进程的信息
其中包含:
进程基本信息 ApplicationInfo processName
进程内存状态信息 adj
进程中包含的组件信息 activity services receives pubProviders

ActivityRecord 类

Ams中使用ActivityRecord数据类来保存每一个Activity的信息,ActivityRecord记录着Activity但是没有Activity的功能实现
主要记录的数据有:
环境信息:进程名,文件路径,数据路径,图标,主题等
运行状态信息:比如idle ,stop,finishing等

TaskRecord 类

Ams中使用任务栈的概念管理Activity的启动和退出顺序,ActivityRecord会持有所属TaskRecord的引用,同时TaskRecord也会记录当前任务栈下所有的ActivityRecord
主要信息有:
唯一标识符:taskid
Intent 创建该任务栈的intent
mActivitys 当前任务栈下的ActivityRecord

ActivityStack 类

ActivityStack并不是任务栈只是用于管理和区分TaskRecord,不同类型的TaskRecord放在不同的ActivityStack中,
例如:ActivityStack mHomeStack 保存着launcher app的TaskRecord
ActivityStack mFocusedStack 保存着当前前台交互的TaskRecord

ActivityStackSupervisor
用来在Ams管理和调度ActivityStack ,TaskRecord ,ActivityRecord 使得ActivtyRecord按预定的设定在不同状态下切换

##关于管理Service部分

ActiveServices类

Ams中通过ActiveServices来管理Service的生命周期
例如:
startServiceInnerLocked
stopServiceLocked
bindServiceLocked
unbindServiceLocked

ServiceRecord类
Ams中用ServiceRecord来保存每一个Service的信息

##关于管理Broadcast部分

BroadcastQueue类

在Ams中使用BroadcastQueue来管理BroadRecord的入队和出队

BroadcastRecord类

在Ams中使用BroadcastRecord来保存Broadcast的信息

##关于管理ContentProvider部分

ContentProviderRecord 类

在Ams通过ContentProvider保存ContentProvider信息

您的一份奖励,就是我的一份激励