| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android kotlin协程浅析笔记 -> 正文阅读 |
|
[移动开发]Android kotlin协程浅析笔记 |
1.协程协程?我们明确一下这篇文章,我们需要了解什么东西.
根据定义得出作用:跟线程差不多的作用, 用来做异步/网络请求 2.协程域的定义如果运行在Android上,请先引入依赖:
(1).GlobalScope.launch: 顶层协程域,任何地方都可以开始创建,但当应用程序结束时,协程也会跟着一起结束。(Android不常用) 很容易看出,下面的语句中,只有"initDebug 1"被打印,而"initDebug 2"因为程序已经结束而无法被打印出. 这里解释一下delay()函数,这里是让协程延迟指定时间后再运行,是协程特有的。
(2)runBlocking: 协程域.但它可以保证在协程域内所有代码和子协程在没有执行完前一直阻塞当前线程. (相当不常用)
(3)coroutineScope:作用域。是一个挂起函数,它的作用就是继承外部协程作用于并创建一个子作用域,一般用作在
(4).viewModel.viewModelScope.launch: 配合ViewModel使用上的,一个常用分配作用域,因其跟随着Activity/Fragment的生命周期 (非常推荐使用).
这里可以看到, 这里返回的是Job,这里可以通过cancle(),让协程进入cancle()状态,
累了吗?累了,来看看图。 3.协程域内的协程开启(1).launch: 开启一个协程,返回一个Job对象.
(2).async: 开启一个线程,返回Deferred对象。会返回代码块内执行的结果.使用await(),获取结果
我们这里可以看到,我们在花时间请求数据后,协程会等待返回结果再继续执行下去.
4.调度器有了调度器之后,协程才真正意义上被赋予了灵魂.
withContext(),这里提醒一个withContext,它类似于async(),但是这里强制要求我们指定一个线程参数。
5.应用根据上面我们所说,我们应该很容易想到了协程的好处,以及我们应用的地方.
当然,这里只是最普通的用法,它还可以用来很多很多的地方,与Flow的配合,再加上网络请求框架okhttp+retrofit.就是如虎添翼了. 另外这里提醒一下,协程使用的是状态管理.如果你要在一个持续任务中cancle掉协程,而延时任务还在进行.cancle是无法直接取消协程的.具体看这个帖子. 6.总结kotlin的协程还是需要我们一个个去掌握的…当然,有一些业务情况下,RXJAVA还是蛮好用的,比如间隔任务之类的.具体任务具体分析嘛~ |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:27:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |