AMS原理分析

  • Post author:
  • Post category:其他


一、AMS的主要作用:

1、统一调度Activity

(1)AMS中的重要数据类:

ProcessReccord:保存该进程中包含的APK信息、内存状态信息用于内存回收、组件列表

ActivityRecord:binder类可用于IPC调用(此处为WMS中调用),保存所有Acitivity信息,包括基本属性信息(包名、进程名、文件路径、图标主题等)和运行状态信息(idle、stop、finishing等)

TaskRecord:任务栈信息,管理Activity的启动和退出顺序。

除此之外,在frameworks\base\services\core\java\com\android\server\am路径中,还有serviceRecord、ProviderRecord、BoardRecord、ProcessRecord、UidRecord等近50个AMS相关的类。

(2)重要变量

如后台的Activity和近期任务的Activity最多20个,onpause必须在0.5秒内执行完,Activity必须在10秒内完成启动并回调给AMS。

(3)启动Activity

Acitivity的启动最终都会调用startActivity(),总体上就是ActivityThread和AMS和WMS的交互过程,详细过程这里不描述,大体流程如图,

Application加载后,先加载provider,然后才加载Activity。

2、内存管理

(1)关闭而不退出

应用关闭后,进程并未退出

(2)内存不够用时,Activity按优先级县回收后台的Activity,或使用OOM进程回收内存

3、进程管理

android一般是多进程单窗口的,因为WMS只会派发消息到当前窗口,其他后台的进程窗口接收不到窗口派发的消息。

二、AMS类的binder通信实现



版权声明:本文为srp123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。