ActivityManagerService.java (下面简称AmS),WindowManagerService.java,View.java 这三大类被称为Android 内核的三大核心功能。
AmS主要功能:
1.统一调度各应用程序的Activity。
2.内存管理。(Activity的回收)
3.进程管理。(向外提供了查询系统正在运行的进程信息的API)
AmS中定义了几个重要的数据类,分别用来保存进程(Process),活动(Activity),任务(Task)
1.ProcessRecord进程数据类:
a.进程文件信息:该进程的APK文件内部信息。
b.进程的内存状态信息:用于OOM处理;这些信息用来判断是否内存不够。如果不够,则根据内存状况,会回收一些优先级比较低的内存。
c.进程中包含的Activity,Provider.Service的数据集等,都是些list。
2.ActivityRecord数据类:保存每个Activity的信息.(2.3版本前名为HistoryRecord)
a.环境信息:该Activity的工作环境;比如:属于哪个package,所在的进程名称,文件路径,数据路径,图片,主题等,
b:运行状态信息:比如 idle,stop,finishing等,这些变量为boolean类型,这里的不是等同于程序中的oncreate,onstop那些状态
该类也是一个Binder,可以被IPC调用,一般要WmS中调用
3.TaskRecord类:
有三大关键变量:
1.int taskId; 每一个任务对应一个Int标识
2.Intent intent; 记录创建该Task时对应的intent
3.int numActivities; 记录该TASK中的Activity数目
注:该类没有记录Activity的列表,这意味着不能直接通过任务id找到其所包含的activity。
如果想查找则应通过Ams中的ArrayList<ActivityRecord> activities,可通过遍历然后根据ActivityRecord中的TaskRecordtask变量来确定是否属于指定的任务。