系统学习 Android 的 进程管理、内存管理、音频管理
系统学习 Android 的进程管理、内存管理、音频管理
要系统学习 Android 的 进程管理、内存管理、音频管理,需要从 基础理论 到 实际源码分析 层层深入,并结合实践。以下是系统性学习路径和建议:
1. 进程管理(Process Management)
核心概念
- Android 进程生命周期:
ActivityManagerService
(AMS)如何管理进程- 进程优先级(
Foreground
、Visible
、Service
、Background
、Empty
) Low Memory Killer
(LMK)机制
- 进程间通信(IPC):
Binder
机制(AIDL、Binder驱动)ContentProvider
、Broadcast
、Socket
等其他 IPC 方式
学习资料
- 官方文档:
- Processes and Threads
- Binder 机制
- 源码分析:
ActivityManagerService.java
(frameworks/base/services/core/java/com/android/server/am/
)ProcessList.java
(进程优先级计算)lmkd
(Low Memory Killer Daemon)
- 书籍:
- 《深入理解 Android 内核设计思想》(第 5 章)
- 《Android 系统源代码情景分析》(Binder 部分)
2. 内存管理(Memory Management)
核心概念
- Java 内存模型:
Heap
(Young/Old Generation
)、GC
(Garbage Collection)Memory Leak
(内存泄漏)分析与LeakCanary
- Native 内存管理:
malloc
/free
、mmap
、ashmem
(匿名共享内存)
- Android 特有机制:
Low Memory Killer
(LMK)MemoryFile
(共享内存)Memory Profiler
(Android Studio 工具)
学习资料
- 官方文档:
- Memory Management Overview
- Analyzing RAM Usage
- 源码分析:
ActivityManagerService
的updateOomAdjLocked()
(调整 OOM 优先级)lmkd
(system/core/lmkd/
)
- 工具:
adb shell dumpsys meminfo
Android Studio Memory Profiler
- 书籍:
- 《深入理解 Android 虚拟机》(Dalvik/ART 内存管理)
- 《Android 性能优化实战》(内存优化部分)
3. 音频管理(Audio Management)
核心概念
- Audio 架构:
Audio HAL
(硬件抽象层)AudioPolicyManager
(路由策略)AudioTrack
/AudioRecord
(播放和录制)
- 音频焦点(Audio Focus):
- 多应用同时播放时的优先级管理
- 音频延迟优化:
AAudio
(低延迟 API)FastMixer
(高通设备低延迟路径)
学习资料
- 官方文档:
- Audio Developer Guide
- AAudio API
- 源码分析:
AudioService.java
(frameworks/base/media/java/android/media/
)AudioFlinger
(frameworks/av/services/audioflinger/
)
- 书籍:
- 《Android 音视频开发》(何俊林)
- 《深入理解 Android 卷 III》(音频系统)
4. 实践方法
- 实验 1(进程管理):
- 写一个
Service
,观察adb shell ps
和dumpsys activity processes
- 通过
kill -9
模拟进程被 LMK 杀死
- 写一个
- 实验 2(内存管理):
- 使用
Memory Profiler
分析Bitmap
泄漏 - 用
NativeMemoryProfiler
分析 JNI 内存泄漏
- 使用
- 实验 3(音频管理):
- 实现
AudioTrack
播放 PCM 数据 - 测试
Audio Focus
抢占机制
- 实现
5. 进阶学习
- 阅读 Linux 内核相关:
cgroups
(进程资源控制)mm
(Linux 内存管理)
- 学习系统调优:
lmkd
调参Low Latency Audio
优化
- 参与 AOSP 贡献:
- 在 Android Open Source Project 提交 Patch
总结
模块 | 关键点 | 学习方法 |
---|---|---|
进程管理 | AMS、Binder、LMK | 源码分析 + dumpsys 实验 |
内存管理 | GC、OOM_ADJ、meminfo | Memory Profiler + 源码 |
音频管理 | Audio HAL、AAudio、Audio Focus | 编写音频播放 App + 源码分析 |
建议先从 官方文档 + 源码 入手,再结合 实际项目优化,最终能独立分析 Android 系统级问题。