1.为什么使用Kotlin协程
在 Android 上,避免阻塞主线程是非常必要的。主线程是一个处理所有界面更新的线程,也是调用所有点击处理程序和其他界面回调的线程。因此,主线程必须顺畅运行才能确保出色的用户体验
在实际开发中我们会遇到这种场景
- 创建子线程执行耗时操作,然后切换到主线程处理界面显示逻辑;但是如果我们在一个接口请求完成后,拿到这个接口返回的结果,在需要去请求另一个接口时,逻辑就会十分复杂,就会出现回调地狱;并且如果在需要考虑接口失败的场景呢?
- 使用Rxjava优化上面的场景;没有内存泄漏、支持取消、正确的使用线程,但是它比较复杂,如
subscribeOn
、observeOn
、map
或者subscribe
,都需要学习
这个时候kotlin 协程就出场了,它可以帮我们解决上面的痛点
2.什么是协程
看下官方的定义,协程是一种并发设计模式。
特点:
协程是我们在 Android 上进行异步编程的推荐解决方案。值得关注的特点包括:
- 轻量:您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。**挂起比阻塞节省内存,且支持多个并行操作。
- 内存泄漏更少:使用结构化并发机制在一个作用域内执行多项操作。**
- 内置取消支持:取消操作会自动在运行中的整个协程层次结构内传播。
- Jetpack 集成:许多 Jetpack 库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可供您用于结构化并发。
3.那协程到底是什么?
官方定义协程是一种轻量级的线程并且举例:创建10000个线程和创建10000个协程来比较协程是比线程轻量,但是协程是线程上层的封装,是基于线程的。要比较也应该和线程池比较。所以这种并不能说明协程比线程轻量。协程的轻量更多的是表现在协程的使用上面。
所以协程其实就是在一个线程挂起并且自己可以在另一个线程恢复的一段程序。
4.如何学习Kotlin协程
知识的学习过程就像谈恋爱一样,讲究循序渐进。上来就想深入了解的话,那大概率是很容易翻车的。但聊得太浅吧,感情又不到位,后续想深入后很难。没有系统的学习是很难讲学到的知识点融会贯通的,所以这里分享谷歌十年技术专家联合打造“最新”《史上最详android版kotlin协程入门进阶实战指南》,帮助大家根据自身不同的阶段,更好的去检索学习Kotliin协程,下面正文开始,需要完整版的可以文末直接领取。
第一章 Kotlin协程的基础介绍
- 协程是什么
- 什么是Job 、Deferred 、协程作用域
- Kotlin协程的基础用法
第二章 kotlin协程的关键知识点初步讲解
- 协程调度器
- 协程上下文
- 协程启动模式
- 协程作用域
- 挂起函数
第三章 kotlin协程的异常处理
- 协程异常的产生流程
- 协程的异常处理
第四章 kotlin协程在Android中的基础应用
- Android使用kotlin协程
- 在Activity与Framgent中使用协程
- ViewModel中使用协程
- 其他环境下使用协程
第五章 kotlin协程的网络请求封装
- 协程的常用环境
- 协程在网络请求下的封装及使用
- 高阶函数方式
- 多状态函数返回值方式
- 直接返回值的方式
第六章 深入kotlin协程原理(一)
- suspend 的花花肠子
- 藏在身后的- Continuation
- 村里的希望- SuspendLambda
第七章 深入kotlin协程原理(二)
- 协程的那些小秘密
- 协程的创建过程
- 协程的挂起与恢复
- 协程的执行与状态机
第八章 Kotlin Jetpack 实战
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程原理
第九章 Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求
- 项目配置
- 实现思路
- 协程实现
- 协程 + ViewModel + LiveData实现
- 后续优化
- 异常处理
- 更新Retrofit 2.6.0
由于文章涉及到的只是点比较多、内容可能过长,可以根据自己的能力水平和熟悉程度分阶段跳着看,有需要完整版的朋友可以点击下方卡片免费获取!