kotlin协程简单封装

简述

经过两天的学习历程,看遍了国内的经典博客,也看完了官方的文档。下面推荐大家阅读

好的文章:
开始使用Kotlin协程
官方:
kotlinx.coroutines

如果英文够好,推荐看官网的,例子比较全面。

本项目源码地址

计划

学习过后,为了更进一步,特地封装一些常用API,以便其他新手学习使用。接下来将完成下面一个个计划功能

1.  顺序执行 task1,task2
2. 并发执行 task1,task2
3. 等待执行 task2 需等待 task1执行完毕后执行
4. 延迟执行 task1 需要10秒之后执行
5. 心跳执行 异步任务按指定间隔执行 Task
6. 任务执行感知生命周期,可以跟随当前activity的生命周期结束而自动结束,并可以配置是否在重新打开activity时是否要重新执行
7. 任务执行可选主线程还是子线程
8. 任务执行可以选择 需要网络或者不需要网络
9. 任务执行可以选择网络制式4G 或者wifi下执行(5.0以上特性)
10.任务可以选择在充电时执行(5.0以上特性)
11. 任务执行可以随时取消,可以取消所有当前任务

目前框架已经做到前7项计划,后续将逐渐完善。

代码演示

1. 顺序执行代码

kotlin协程简单封装_第1张图片
代码

效果

kotlin协程简单封装_第2张图片
顺序执行效果图

2. 并发执行 并且分别延迟1秒,3秒

kotlin协程简单封装_第3张图片
代码

效果

kotlin协程简单封装_第4张图片
并发效果图

3. 等待执行

kotlin协程简单封装_第5张图片
代码

效果

kotlin协程简单封装_第6张图片
等待效果图

4. 心跳

kotlin协程简单封装_第7张图片
代码

效果

kotlin协程简单封装_第8张图片
心跳效果图

5. Activity 生命周期感知

实现步骤:

(1)创建一个JobHolder,用于保存job属性

(2)扩展View,添加contextJob属性,从View的上下文中也就是JobHolder的实现类中拿到Job对象,再扩展View的onClick事件,在事件中创建协程,并将Job作为协程的上下文传入给该协程,就可以被job取消了

(3)让Activity实现JobHolder,负责创建Job对象,并在生命周期结束的时候结束掉Job

kotlin协程简单封装_第9张图片
JobHolder
kotlin协程简单封装_第10张图片
扩展()
kotlin协程简单封装_第11张图片
生命周期绑定

6. 协程中切换到android UI 线程

思路:用handler实现,在协程中只需要将Handler作为协程的上下文,并获取主线程的looper就行了

代码实现:

kotlin协程简单封装_第12张图片
代码

使用:给协程传入UI上下文即可

kotlin协程简单封装_第13张图片
主线程切换实现

总结

线程是进程的最小单位,那么协程是线程的最小单位,而且协程可以在不同线程中随意跳转,还有更高级的玩法,协程间的通信,协程间的选择,协程之间数据共享,后期再继续更新更高级的玩法。
在这特别声明一点: 协程之间同时操作一个变量的时候,也是要考虑并发对变量的影响的,这点跟多线程一样,解决办法也类似,但不会阻塞线程。总结优点很多,很值得去用。

你可能感兴趣的:(kotlin协程简单封装)