如果你在 Android 项目里写过网络请求,多半见过这样的代码:回调一层套一层,或者在 Activity 销毁后还在往 UI 上写数据,然后崩溃日志里出现一个空指针。Kotlin 协程被官方推荐了好几年,但很多人对它的理解停留在 launch、async 这几个关键字,遇到取消传播、异常处理、结构化并发就说不清楚了。这门课针对的就是这个断层——不是教你背 API,而是把协程当成一套并发模型来讲清楚。
它解决的是哪类工作场景
最典型的三类问题:一是异步任务的取消与生命周期绑定,页面退出后后台任务该停就停,不再靠手动置标志位;二是并发任务的编排,比如一个页面要同时拉用户信息和订单列表,等两个都回来再渲染,或者谁先回来先用谁;三是异常与线程切换,网络层抛出的异常怎么在协程作用域里被正确捕获,IO 线程和主线程之间怎么安全地切回来。这些不是理论问题,是每天写业务都会碰到的。课程从基础语法讲到调度器、作用域、上下文,再往 Flow 和并发控制走,路径是围绕实际使用顺序铺的,不是按文档章节抄一遍。
适合什么基础,不建议谁买
需要你已经会写 Kotlin,至少熟悉函数、类、Lambda、泛型的基本写法,能看懂 suspend 修饰的函数在做什么。如果你连 Kotlin 都还没写过,先补语言基础,直接上这门课会在语法层面卡住。另外,如果你只是想找一个能直接粘贴的代码片段库,这门课可能不划算——它更偏向讲清楚为什么这么写。反过来,如果你已经在项目里用过协程但总觉得没吃透,或者正准备把老项目的回调风格改造成协程风格,那它对你的价值会比较直接。
建议的看课顺序和练习方式
不用从第一节顺到最后。先集中看基础部分里关于 suspend 函数、作用域构建器和调度器的几块,把「协程不是线程」这件事想明白;然后跳到取消与异常处理,这两块是实际项目里最容易出问题的地方,看完立刻回到自己的项目里找一处回调代码改写成协程,比继续往下看新内容有用。Flow 部分建议等前面练熟了再进,它涉及背压和冷热流的区别,没有前面的铺垫容易看成一堆操作符的堆砌。资料里的示例代码不要只读,逐段跑一遍,改掉其中某个参数看行为怎么变,比如把调度器从 IO 换成 Default,观察输出顺序。每看完一个模块,给自己出一道题:把项目里某个异步逻辑用协程重写,并且写清楚它在页面销毁时会发生什么。能做到这一点,说明这一块真的过了。
学完之后,你应该能独立完成这些事:为一个页面设计合理的协程作用域并绑定生命周期;用 async 和 await 编排多个并发请求并处理其中某个失败的情况;用 Flow 处理连续数据流并做基本的操作符组合;在代码评审里指出别人协程写法里的取消泄漏或异常吞掉问题。这些能力不需要等到「学完整门课」才具备,按上面的顺序走,基础加取消异常这两块吃透,就已经能覆盖大部分日常开发场景了。
课程目录
课程目录70 集
- 扔物线 Kotlin协程完全教程-从基础实践到进阶再到专家(更新中)-节数【69】说明.png [493.5 KB] 012.1.10-并行协程的启动和交互().mp4
- [78.8 MB] 064.4.31-Mutable Shared Flow().mp4
- [74.5 MB] 039.4.5-actor():把 SendChannel 暴露出来().mp4
- [26.8 MB] 045.4.11-distinct UntilChanged()()【持续更新‖免费提供:Cunworknotess】.mp4
- [16.1 MB] 040.4.6-Flow 的功能定位().mp4
- [133.4 MB] 027.3.1-Coroutine Scope _ -Context().mp4
- [45.5 MB] 052.4.18-reduce()、fold() 系列操作符().mp4
- [82.4 MB] 054.4.20-chunked() 操作符()【持续更新‖免费提供:Cunworknotess】.mp4
- [6.7 MB] 053.4.19-onEach() 操作符()【持续更新‖免费提供:Cunworknotess】.mp4
- [15.3 MB] 061.4.27-多个 Flow 的合并().mp4
- [80.3 MB] 018.2.4-线程的交互式结束:interrupt()().mp4
- [124.5 MB] 056.4.22-catch() 操作符().mp4
- [79.6 MB] 069.5.4-ThreadLocal_()【整理不易‖记得关注:CunWorKNotess】.mp4
- [54.7 MB] 057.4.23-retry() 和 retryWhen() 操作符()【不易整理‖请关注:CunWorkNotess】.mp4
- [35.4 MB] 026.2.12-Supervisor Job().mp4
- [40.1 MB] 031.3.5-再谈 withContext()().mp4
- [44.2 MB] 013.1.11-连接线程世界:和回调型 API 协作_().mp4
- [75.8 MB] 042.4.8-Flow 的创建().mp4
- [93.4 MB] 036.4.2-用 produce() 来提供跨协程的事件流().mp4
- [68.7 MB] 015.2.1-概念落地:「一个协程」到底指的是什么().mp4
- [129.6 MB] 043.4.9-Flow 的收集().mp4
- [47.9 MB] 046.4.12-自定义 Flow 操作符().mp4
- [31.0 MB] 022.2.8-协程的结构化异常管理().mp4
- [168.3 MB] 011.1.9-结构化并发初探().mp4
- [99.0 MB] 001.0-先导视频_().mp4
- [24.3 MB] 033.3.7-Coroutine Context的加减和get()().mp4
- [90.2 MB] 034.3.8-自定义 Coroutine Context()【持续更新‖免费提供:Cunworknotess】.mp4
- [17.9 MB] 030.3.4-coroutine Scope() 和 superv().mp4
- [116.7 MB] 025.2.11-async() 对异常的处理_().mp4
- [66.6 MB] 017.2.3-线程的强制结束:stop()().mp4
- [17.2 MB] 014.1.12-回到线程世界:runBlocking()()【持续更新‖免费提供:Cunworknotess】.mp4
- [46.7 MB] 002.1.0-学协程有用吗_().mp4
- [48.3 MB] 021.2.7-不配合取消:NonCancellable().mp4
- [104.4 MB] 059.4.25-flowOn() 操作符().mp4
- [99.5 MB] 055.4.21-try_catch 和 Flow 的异常可见性()【整理不易‖记得关注:CunWorKNotess】.mp4
- [139.0 MB] 041.4.7-Flow 的工作原理和应用场景_()【整理不易‖记得关注:CunWorKNotess】.mp4
- [81.9 MB] 028.3.2-GlobalScope().mp4
- [38.7 MB] 023.2.9-Coroutine Exception Handle().mp4
- [44.3 MB] 067.5.2-select():先到先得_().mp4
- [28.7 MB] 047.4.13-timeout、sample、debounce()().mp4
- [71.5 MB] 065.4.32-StateFlow().mp4
- [38.5 MB] 048.4.14-drop()、take() 系列操作符().mp4
- [16.0 MB] 049.4.15-map() 系列操作符().mp4
- [38.7 MB] 051.4.17-withIndex() 操作符().mp4
- [9.3 MB] 063.4.30-shareIn() 操作符().mp4
- [91.9 MB] 003.1.1-切线程:launch()()【公重号:CunWorkNotess】.mp4
- [125.9 MB] 060.4.26-buffer() 系列操作符().mp4
- [76.4 MB] 009.1.7-消除魔法:挂起函数为什么不卡线程?().mp4
- [106.2 MB] 044.4.10-filter() 系列操作符()【整理不易‖记得关注:CunWorKNotess】.mp4
- [53.1 MB] 032.3.6-Coroutine Name().mp4
- [12.7 MB] 016.2.2-父子协程,以及协程间的并行和等待().mp4
- [88.4 MB] 004.1.2-自动切回来:挂起函数().mp4
- [80.7 MB] 062.4.29-SharedFlow 的效果和适用场景().mp4
- [120.4 MB] 024.2.10-异常的结构化管理的本质().mp4
- [124.4 MB] 038.4.4-Channel API 详解().mp4
- [181.9 MB] 008.1.6-挂起函数的性能优势:从 withContext()().mp4
- [62.6 MB] 005.1.3-Android 项目里协程代码的写法_()【公重号:CunWorkNotess】.mp4
- [50.2 MB] 007.1.5-自定义挂起函数().mp4
- [16.8 MB] 058.4.24-onStart() 等全流程监听系列操作符().mp4
- [25.3 MB] 029.3.3-从挂起函数里获取 Coroutine Context().mp4
- [31.8 MB] 019.2.5-协程的交互式取消:cancel()().mp4
- [112.2 MB] 066.5.1-协程间的协作和等待()【不易整理‖请关注:CunWorkNotess】.mp4
- [33.0 MB] 037.4.3-Channel 的工作模式详解().mp4
- [77.6 MB] 010.1.8-「轻量级线程」的本质:从 delay() 说起()【不易整理‖请关注:CunWorkNotess】.mp4
- [49.2 MB] 006.1.4-withContext():手动切线程().mp4
- [38.8 MB] 035.4.1-Channel 和 Flow 简介与对比().mp4
- [23.2 MB] 068.5.3-互斥锁和共享变量_()【公重号:CunWorkNotess】.mp4
- [157.1 MB] 020.2.6-协程的结构化取消().mp4
- [87.9 MB] 050.4.16-transform() 系列操作符()【不易整理‖请关注:CunWorkNotess】.mp4
- [37.6 MB] 适合人群 Android 开发者 Kotlin 爱好者 编程初学者 学习收获 掌握 Kotlin 协程核心概念 提升 Android 应用性能 成为 Kotlin 协程专家 祝您学习愉快! 学有所成,前程似锦!






