Android ActivityManagerService--

2023-10-29  本文已影响0人  DarcyZhou

本文转载自:

本文基于Android 11.0源码分析

前言

  ActivityManagerService(简称AMS) 主要负责四大组件的启动、切换、调度以及应用进程的管理和调度工作。本篇内容介绍一下AMS中重要内部类和组成结构。

1.AMS重要类介绍

1.1 ProcessRecord数据结构

1.1.1 第一类数据:描述身份的数据

AMS04.png

1.1.2 第二类数据:描述进程中组件的数据

AMS05.png

1.1.3 第三类数据:描述进程状态的数据

1.1.4 第四类数据:和pss相关的数据

  我们先来普及一下一些名词:

VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

1.1.5 第五类数据:和时间相关的数据

1.1.6 第六类数据:crash和anr相关的数据

1.1.7 第七类数据:和instrumentation相关的数据

  instrumentation 也可以说是apk的一个组件,如果我们提供的话,系统会默认使用Instrumentation.java类,按照我们一般的理解,UI线程控制activity的生命周期,是直接调用Activity类的方法,实际是这样子的,UI线程调用的是instrumentation的方法,由它在调用Activity涉及生命周期的方法,所有如果我们覆写了instrumentation的这些方法,就可以了解所有的Activity的生命周期了。

1.1.8 第八类数据:电源信息和调试信息

1.1.9 第九类数据 进程相关的boolean值

(1)进程声明周期相关的

(2)组件状态影响进程行为的

(3)其他

1.2 ProcessRecord容器

1.2.1 永久性容器

1.2.2 临时性容器

1.3 四大组件记录表的容器

  组件运行才是进程存在的意义,由于android系统进程间的无缝结合,所以系统需要控制到组件级别,所有的组件信息都需要映射到系统,一个ActivityRecord记录对应一个Activity的信息,一个ServiceRecord记录对应一个Service的信息,一个ConnectionRecord记录对应一个bind service的客户端信息,一个ReceiverList对应处理同一事件的一组广播,一个ContentProviderRecord记录对应一个ContentProvider信息,一个ContentProviderConnection对应一个进程中的所有ContentProvider客户端。

1.3.1 activity记录

1.3.2 service记录

1.3.3 广播接收器记录

1.3.4 ContentProvider记录

上一篇 下一篇

猜你喜欢

热点阅读