多线程与协程知识体系概览
问题
Android 多线程和异步编程涉及哪些核心知识?
答案
异步方案演进
核心知识图谱
| 主题 | 内容 |
|---|---|
| Handler/Looper | 线程间通信、消息队列、主线程消息机制 |
| Kotlin 协程进阶 | CoroutineScope、Job、Dispatcher、结构化并发 |
| Flow | 冷流、StateFlow、SharedFlow、操作符 |
| RxJava | Observable、操作符、调度器、背压 |
| 线程池 | Executors、自定义线程池 |
| 同步机制 | synchronized、Lock、原子类 |
Android 线程规则
不可在主线程执行耗时操作
Android 主线程(UI 线程)负责绑定处理界面绘制和用户交互。在主线程执行网络请求、数据库操作等耗时操作会导致 ANR。
// ❌ 错误:主线程网络请求
val data = URL("https://api.example.com").readText()
// ✅ 正确:协程切换到 IO 线程
lifecycleScope.launch {
val data = withContext(Dispatchers.IO) {
URL("https://api.example.com").readText()
}
textView.text = data // 自动回到主线程
}