简述

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

好的文章:
开始使用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. 顺序执行代码

代码

效果

顺序执行效果图

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

代码

效果

并发效果图

3. 等待执行

代码

效果

等待效果图

4. 心跳

代码

效果

心跳效果图

5. Activity 生命周期感知

实现步骤:

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

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

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

JobHolder

扩展()

生命周期绑定

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

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

代码实现:

代码

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

主线程切换实现

总结

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

转载于:https://my.oschina.net/u/3617358/blog/1519531

kotlin协程简单封装,助你一臂之力相关推荐

  1. kotlin协程+retrofit简单取消接口回调

    kotlin协程 简单处理取消普通方法回调&retrofit接口回调 build implementation "org.jetbrains.kotlinx:kotlinx-coro ...

  2. Kotlin 协程:简单理解 runBlocking, launch ,withContext ,async,doAsync

    前言 Kotlin的协程,本质上是一个线程框架,它可以方便的切换线程的上下文(如主线程切换到子线程/子线程切回主线程).而平时我们要想在Android Studio使用协程,先要在gradle引入协程 ...

  3. AndroidSDK开发6我用kotlin协程写了一个简单sdk

    目录 AndroidSDK开发6我用kotlin协程写了一个简单sdk 1.kotlin的依赖和导包如下:(//如果不使用协程可以去掉协程的导包减少sdk包大小) 2.Application代码如下: ...

  4. Android中使用Kotlin协程代替RxJava封装网络请求

    现在的Android项目普遍使用Retrofit+RxJava的组合实现网络接口请求与数据的展现.这一功能通过Kotlin语言的协程功能也可以很方便的实现. 相比较而言,RxJava功能过于强大,如果 ...

  5. Kotlin协程 - - - 协程的简单使用

    一.协程介绍 1.简介 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码.协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念. 在 And ...

  6. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  7. 动手实现Kotlin协程同步切换线程,以及Kotlin协程是如何实现线程切换的

    前言 突发奇想想搞一个同步切换线程的Kotlin协程,而不用各种withContext(){},可以减少嵌套且逻辑更清晰,想实现的结果如下图: 分析 实现我们想要的结果,首先需要知道协程为什么可以控制 ...

  8. pdf 深入理解kotlin协程_协程初探

    Hello,各位朋友,小笨鸟我回来了! 近期学习了Kotlin协程相关的知识,感觉这块技术在项目中的可应用性很大,对项目的开发效率和维护成本有较大的提升.于是就考虑深入研究下相关概念和使用方式,并引入 ...

  9. 一文看透 Kotlin 协程本质

    前言 公司开启新项目了,想着准备亮一手 Kotlin 协程应用到项目中去,之前有对 Kotlin 协程的知识进行一定量的学习,以为自己理解协程了,结果--实在拿不出手! 为了更好的加深记忆和理解,更全 ...

最新文章

  1. java == 与 equals 相同与不同点
  2. 如何玩转网络安全下的深度学习?最全的学习资料清单看这里
  3. python参数_python 参数
  4. qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头
  5. 计算机二维动画的核心技术是什么意思,数字化技术在二维动画设计中的应用研究...
  6. 水滴石穿C语言之static辨析
  7. python怎么读取图像的txt标注_使用包含文件名的.txt文件读取图像数据
  8. java3d曲面图开发_web三维图表的开发
  9. Intellij IDEA安装与使用,完整详细。
  10. Android Multimedia框架总结(四)MediaPlayer从Java层到C++层类关系及prepare及之后其他过...
  11. linux中的ps fx命令,Linux中的ps命令
  12. JSOUP爬虫常见问题解决方法
  13. 【XAMPP】phpMyAdmin安装和配置_解决修改密码后错误问题
  14. 【历史上的今天】10 月 14 日:iPhone 十年之变;英国计算机协会成立;第一个 C++ 编译器诞生
  15. RecyclerView --- 分割线
  16. 如何把catia完全卸载干净_电脑卸载不了catia软件怎么办?电脑彻底卸载catia软件的方法...
  17. 【数据库系统概念第七版(Database System Concepts 7th)配套SQL文件如何获取】
  18. kebernetes dashboard使用config和Token
  19. ubuntu 12.04 KDE(Kool Desktop Environment,桌面环境)的安装
  20. iOS审核-17次被打回的完整记录 2020/6/1

热门文章

  1. UCK将信任建立在安全之上 让生态价值源远流长
  2. P2.5室内LED显示屏的技术参数以及优点分析
  3. 标称型和数值型(连续型)的区别
  4. 正点原子的内存管理_正点原子【STM32-F407探索者】第四十二章 内存管理实验
  5. python Excel xlwt 富文本 同一单元格内设置不同样式
  6. 基于STM32F103的智能门锁系统
  7. 计算机游戏动漫制作自我鉴定,动画制作专业自我鉴定范文
  8. Kafka 的 Lag 计算误区及正确实现
  9. 高防服务器的适用场景
  10. 菜刀webshell特征分析