# 02-Activity管理

本目录包含Android Framework中Activity管理的核心知识和技术文档。Activity作为Android应用的基本组成单元，其管理机制直接影响应用的性能、稳定性和用户体验。

## 文档结构

### 1. 生命周期深度解析.md
- **内容**：深入分析Activity生命周期的各个阶段、回调机制和最佳实践
- **重点**：生命周期状态管理、配置变更处理、内存管理优化
- **适用**：所有Android开发者，特别是需要优化应用稳定性的开发者

### 2. 异常恢复机制.md
- **内容**：分析Activity在异常情况下的恢复机制和状态保存策略
- **重点**：状态保存与恢复、ViewModel状态管理、持久化数据恢复
- **适用**：需要处理配置变更和内存回收的复杂应用

### 3. Activity启动流程（跨进程）.md
- **内容**：详细分析Activity跨进程启动的完整流程和关键组件
- **重点**：AMS处理机制、进程创建、跨进程通信、性能优化
- **适用**：需要理解系统底层机制和优化启动性能的开发者

### 4. Activity栈管理（Task&Stack）.md
- **内容**：深入分析Activity栈的结构、管理策略和最佳实践
- **重点**：启动模式、Intent Flag控制、多窗口模式下的栈管理
- **适用**：需要设计复杂导航和任务管理的应用架构师

## 核心概念

### Activity生命周期
- **创建阶段**：onCreate() -> onStart() -> onResume()
- **暂停阶段**：onPause() -> onStop()
- **恢复阶段**：onRestart() -> onStart() -> onResume()
- **销毁阶段**：onPause() -> onStop() -> onDestroy()

### 启动模式
- **standard**：标准模式，每次启动创建新实例
- **singleTop**：栈顶复用模式，栈顶存在则复用
- **singleTask**：栈内复用模式，清理上方Activity
- **singleInstance**：单实例模式，独占任务栈

### 任务栈管理
- **任务（Task）**：用户为了完成某项工作而交互的Activity集合
- **回退栈（Back Stack）**：用户按返回键时导航的Activity栈
- **栈操作**：压栈、出栈、清栈等基本操作

## 技术要点

### 1. 状态管理
- **临时状态**：使用onSaveInstanceState()保存
- **持久状态**：使用ViewModel或本地存储保存
- **配置状态**：处理屏幕旋转等配置变更

### 2. 性能优化
- **启动优化**：减少冷启动、热启动时间
- **内存优化**：避免内存泄漏，及时释放资源
- **通信优化**：优化跨进程通信效率

### 3. 调试技巧
- **日志分析**：使用adb logcat查看生命周期日志
- **状态查看**：使用dumpsys activity查看栈状态
- **性能分析**：使用systrace分析启动性能

## 最佳实践

### 1. 生命周期管理
- **单一职责**：每个生命周期方法职责明确
- **资源管理**：在合适的时机申请和释放资源
- **状态保存**：合理保存和恢复UI状态

### 2. 启动模式选择
- **入口页面**：使用singleTask模式
- **详情页面**：使用standard模式
- **临时页面**：使用singleTop模式
- **独占功能**：使用singleInstance模式

### 3. 栈设计原则
- **合理深度**：控制栈深度在合理范围
- **清晰导航**：提供清晰的用户导航路径
- **任务隔离**：不同功能使用不同任务栈

## 调试工具

### 常用命令
```bash
# 查看Activity生命周期日志
adb logcat -s ActivityManager:I *:S

# 查看所有Activity栈信息
adb shell dumpsys activity activities

# 分析启动时间
adb shell am start -W -n <package>/<activity>

# 性能分析
adb shell systrace.py app view res
```

### 问题排查
- **ANR分析**：检查生命周期方法执行时间
- **内存泄漏**：使用LeakCanary或MAT分析
- **状态丢失**：检查onSaveInstanceState实现

## 学习路径

### 初级开发者
1. 掌握Activity基本生命周期
2. 理解标准启动模式
3. 学会基本的状态保存

### 中级开发者
1. 深入理解各种启动模式
2. 掌握跨进程启动机制
3. 学会性能优化技巧

### 高级开发者
1. 理解系统底层实现机制
2. 掌握复杂栈管理策略
3. 能够设计和优化复杂架构

## 相关资源

### 官方文档
- [Android Developers - Activity](https://developer.android.com/guide/components/activities)
- [Android Developers - Tasks and Back Stack](https://developer.android.com/guide/components/activities/tasks-and-back-stack)

### 开源项目
- [Android Open Source Project](https://source.android.com/)
- [Google Samples](https://github.com/android)

### 工具资源
- [Android Studio Profiler](https://developer.android.com/studio/profile)
- [LeakCanary](https://square.github.io/leakcanary/)
- [MAT (Memory Analyzer Tool)](https://www.eclipse.org/mat/)

## 更新日志

### 2026-01-12
- 完善所有文档内容，使用标准Markdown格式
- 修复文件编码问题，确保UTF-8编码
- 添加详细的技术分析和最佳实践
- 补充调试工具和问题排查方法

## 贡献指南

欢迎对本目录的文档进行改进和补充：
1. 确保内容准确、技术正确
2. 使用标准的Markdown格式
3. 添加实际代码示例和最佳实践
4. 保持文档结构清晰、层次分明

---

*本目录文档将持续更新，以反映Android Framework的最新发展和最佳实践。*