2024年3月27日发(作者:)

ActivityThread、AMS(ActivityManagerService)和WMS

(WindowManagerService)的工作原理

在Android操作系统中,ActivityThread、AMS和WMS是核心的系统组件,它们协同工作以

实现应用程序的启动、管理和显示。下面将详细介绍它们的工作原理。

### 1. ActivityThread

**ActivityThread是Android应用程序的主线程。**

**主要职责:**

- 创建和管理应用程序中的所有组件,如Activity、Service、BroadcastReceiver等。

- 处理和响应来自系统或其他应用程序的消息。

- 负责处理UI线程的消息循环,确保UI的正常刷新和响应用户交互。

**工作原理:**

1. **应用启动:** 当应用程序启动时,系统会创建一个新的进程,并在该进程中创建一个

ActivityThread实例。

2. **主线程启动:** ActivityThread启动后,会创建一个Handler对象,负责处理消息队列

中的消息。

3. **应用初始化:** ActivityThread负责应用程序的初始化,包括创建Application实例、初

始化资源、加载类等。

4. **启动Activity:** 当应用程序启动一个Activity时,ActivityThread会负责创建并启动该

Activity的生命周期,包括调用onCreate()、onStart()等方法。

5. **消息处理循环:** ActivityThread会不断地处理消息队列中的消息,这些消息包括来自

系统的各种事件,如屏幕旋转、按键事件等。

### 2. AMS(ActivityManagerService)

**AMS是Android系统的活动管理服务,负责管理应用程序的生命周期和任务栈。**

**主要职责:**

- 启动、管理和停止应用程序中的组件,如Activity、Service等。

- 管理应用程序的任务栈,确保多个应用程序可以同时运行,提供任务切换的功能。

- 处理系统级的操作,如屏幕旋转、按键事件等。

- 监控应用程序的内存使用情况,根据需要终止一些进程以释放资源。

**工作原理:**

1. **启动Activity:** 当应用程序请求启动一个Activity时,AMS会根据Intent信息,找到

对应的Activity组件,并启动它。

2. **Activity生命周期管理:** AMS负责监控和管理Activity的生命周期,包括调用onCreate()、

onStart()、onResume()等生命周期方法。

3. **任务栈管理:** AMS维护着应用程序的任务栈,确保不同应用程序的Activity可以合理

地共存。它管理着任务的启动、切换和结束。

4. **进程管理:** AMS监控应用程序的内存使用情况,当系统内存不足时,根据一定的策

略终止一些进程,释放资源。

### 3. WMS(WindowManagerService)

**WMS是Android系统的窗口管理服务,负责管理应用程序窗口的显示和布局。**

**主要职责:**

- 管理应用程序中窗口的层级和布局。

- 处理窗口的可见性、尺寸和位置等属性。

- 支持窗口的动画效果。

- 响应用户的触摸事件和键盘事件。

**工作原理:**

1. **窗口管理:** WMS负责管理应用程序窗口,包括Activity的窗口、Dialog的窗口等。它

维护着一个窗口列表,管理它们的层级关系。

2. **布局和显示:** WMS根据窗口的属性,计算窗口的布局和显示位置。它确保窗口按照

正确的顺序显示在屏幕上。

3. **事件处理:** WMS处理用户的触摸事件和键盘事件,将这些事件分发给合适的窗口处

理。

4. **窗口动画:** WMS支持窗口的动画效果,例如Activity的启动和退出动画。

### 总体协同工作流程:

1. **应用启动:** ActivityThread负责应用程序的初始化和启动。

2. **AMS管理:** AMS负责应用程序的生命周期和任务管理。

3. **WMS布局:** WMS负责窗口的管理和布局显示。

**协同工作流程:**

1. 用户启动应用程序。

2. ActivityThread负责应用程序的初始化和启动,创建Activity等组件。

3. AMS负责管理应用程序的生命周期,启动和管理Activity,维护任务栈。

4. WMS负责管理应用程序窗口,包括布局、显示和事件处理。

5. 用户与应用程序交互,触发各种事件。

6. AMS和WMS根据事件分别管理生命周期和窗口操作。

在整个Android系统中,ActivityThread、AMS和WMS紧密协同工作,共同确保应用程序的

正常运行、生命周期管理和界面显示。这三者共同构成了Android应用程序的基础框架。