学习android内核 -- AmS相关内容记录

本文详细介绍了Android系统中ActivityManagerService (AMS) 的核心功能及其内部数据结构,包括进程管理、内存管理和活动调度等方面的内容,并深入探讨了AMS中的关键数据类如ProcessRecord、ActivityRecord和TaskRecord。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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变量来确定是否属于指定的任务。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值