通过两天的学习历程,看遍了国内的经典博客,也看完了官方的文档。下面推荐你们阅读android
好的文章:
开始使用Kotlin协程
官方:
kotlinx.coroutinesgit
若是英文够好,推荐看官网的,例子比较全面。github
本项目源码地址网络
学习事后,为了更进一步,特意封装一些经常使用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项计划,后续将逐渐完善。框架
代码异步
效果ide
顺序执行效果图oop
代码
效果
并发效果图
代码
效果
等待效果图
代码
效果
心跳效果图
实现步骤:
(1)建立一个JobHolder,用于保存job属性
(2)扩展View,添加contextJob属性,从View的上下文中也就是JobHolder的实现类中拿到Job对象,再扩展View的onClick事件,在事件中建立协程,并将Job做为协程的上下文传入给该协程,就能够被job取消了
(3)让Activity实现JobHolder,负责建立Job对象,并在生命周期结束的时候结束掉Job
JobHolder
扩展()
生命周期绑定
思路:用handler实现,在协程中只须要将Handler做为协程的上下文,并获取主线程的looper就好了
代码实现:
代码
使用:给协程传入UI上下文便可
主线程切换实现
线程是进程的最小单位,那么协程是线程的最小单位,并且协程能够在不一样线程中随意跳转,还有更高级的玩法,协程间的通讯,协程间的选择,协程之间数据共享,后期再继续更新更高级的玩法。 在这特别声明一点: 协程之间同时操做一个变量的时候,也是要考虑并发对变量的影响的,这点跟多线程同样,解决办法也相似,但不会阻塞线程。总结优势不少,很值得去用。