Logo

Android 学习者

专注 Android 开发知识整理与总结,涵盖 IPC 通信、View 事件分发、并发编程等核心知识点。 笔记基于实战经验与个人学习总结,希望能帮助到同样在 Android 路上前进的你。

Android 协程 IPC Kotlin 面试
56
笔记总数
9
分类目录
90+
知识点
6月
最近更新

IPC 跨进程通信

6 篇笔记

Java 基础

5 篇笔记

Kotlin

2 篇笔记

协程

9 篇笔记

第一章 · 协程到底是什么

从零手写状态机理解协程本质——可暂停再继续的函数

Coroutine 状态机 协作式

第二章 · 为什么协程不会阻塞线程

挂起≠阻塞:delay 期间线程被释放去干别的,sleep 期间线程真睡了

挂起vs阻塞 delay 定时器队列

第三章 · 挂起和恢复的内部机制

状态机到底长什么样?从 Continuation 到 COROUTINE_SUSPENDED

Continuation 状态机 SUSPENDED

第四章 · 协程的栈——栈到底在哪?

堆上!按需增长 vs OS 线程的固定 1MB——拆卸与重组调用链

栈vs堆 续体链表 内存对比

第五章 · 协程作用域——结构化并发

给协程找一个「爹」——谁生谁管、谁死谁死,三条铁律永不泄漏

CoroutineScope 结构化并发 viewModelScope

第六章 · 调度器——协程在哪个线程上跑

协程不绑定任何线程——它是线程的过客,Dispatcher 是派工系统

Dispatcher Main/IO withContext

第七章 · Runtime 调度全貌

一根棍子+一堆续体+线程池——完整协程引擎的伪代码实现

epoll_wait 调度引擎 时间线

第八章 · Go vs Java vs Kotlin

底层同一套(epoll),上层不同皮——全自动 vs 兼容 vs 显式染色

Go 虚拟线程 染色函数

第九章(终章)· 协程 ≠ 异步框架

Selector 是轮子,协程是车身——同一根棍子,天差地别的写法

回调地狱 九章串联 终极总结

协程深入

15 篇笔记

一、协程调度器与线程池

CoroutineScope 就是协程世界的 Executor——从源码角度看懂调度器的继承体系与自定义线程池

CoroutineScope CoroutineDispatcher ContinuationInterceptor Executor 线程池

二、suspend与挂起函数

从Retrofit到withContext——suspend的本质、生命周期作用域、并行串行分水岭

suspend Retrofit lifecycleScope withContext 协程

三、自定义挂起函数与withContext封装

suspend 的传染性、两种封装方式对比、调度器相同时的零开销优化

suspend withContext 调度器优化 ContinuationInterceptor

四、线程与切线程:从回调到续体

从 Java 主线程到 Android 消息循环——两种切线程方式本质都是回调

线程 Handler 回调 续体 CPS 协程

五、协程取消与结构化并发:Job取消与父子协程

从 sleep 与 delay 的本质差异出发,理解协程取消机制与结构化并发的层级管理思想

Job cancel 结构化并发 CoroutineScope 协程取消

六、协程的并行与串行 —— async/await 与结构化组合

灵活组合并发执行与串行等待,用 coroutineScope 实现真正的结构化并发

async await coroutineScope 并行 串行 Deferred 结构化并发

七、suspendCoroutine与suspendCancellableCoroutine —— 回调转挂起函数

用一个函数把传统回调式 API 转换成挂起函数,suspendCancellableCoroutine 更支持取消回调

suspendCoroutine suspendCancellableCoroutine 回调 挂起 Continuation invokeOnCancellation

八、runBlocking入门

launch/async/runBlocking 三种启动方式的分工——runBlocking 自建 CoroutineContext 阻塞桥接

runBlocking 协程启动 阻塞 CoroutineScope CoroutineContext

九、Job与CoroutineScope:管理句柄与执行单元的分离

Thread 对象=执行单元+管理句柄,Job 只是管理句柄——CoroutineScope 与 Job 的职责分离

Job CoroutineScope Thread 协程 管理句柄 结构化并发 ContinuationInterceptor

十、Job树与结构化并发的本质

结构化并发不是编译期语法树——parent 与 children 双向引用构成运行时动态 Job 树

Job 结构化并发 parent children 协程树 运行时 父子关系 launch

四种调度器设计原理深度解析

从阿姆达尔定律到弹性线程池——Default/IO/Main/Unconfined 源码级解析

Default IO弹性池 Main.immediate

续体与状态机 —— suspend 函数的编译秘密

编译器在背后做了什么?从 5 行 Kotlin 反编译出 50 行 Java,逐行拆解 Continuation 状态机

suspend Continuation 状态机 CPS 编译

CoroutineScope的创建与上下文配置

Job 和 Dispatcher 的不同组合,决定了 scope 是否具备结构化并发的取消能力

CoroutineScope CoroutineContext Job Dispatcher cancel 上下文

Job接口与协程状态管理

Job 是协程的句柄和生命周期管理器,cancel 只改状态不杀人 —— 协程的取消是协作式的

Job JobSupport cancel join 状态机 AbstractCoroutine StandaloneCoroutine isActive

runBlocking:阻塞边界与设计目的

以最小代价在阻塞式外部约束与协程世界之间架桥,内部保留结构化并发、取消与异常传播

runBlocking 阻塞边界 main函数 单元测试 interrupt 死锁 CancellationException

Android 框架

3 篇笔记

View 体系

5 篇笔记

网络

9 篇笔记

面试模拟

2 篇笔记
专栏 总结感悟与深度分享 —— 精心打磨,宁缺毋滥