##关于管理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信息