一学就会的协程使用——基础篇(一)协程启动

1. 启动一个协程

来,来启动第一个协程吧:

GlobalScope.launch(Dispatchers.IO) {
    myLog("coroutine runs in IO")
}

就这么简单,就可以在任意一个地方启动一个协程,而且这个协程必然会执行在副线程(非主线程)当中!

2. 简单介绍

在Java线程的使用上,每次创建了线程还必须手动调用start()线程才会启动,而协程,通常情况下,像上面的写法,里面的执行代码便已经会启动,无需再显示调用启动。

本文只会讲协程启动,且不扯淡各种启动模式。

3. 启动的执行在主线程的协程

GlobalScope.launch(Dispatchers.Main) {
    myLog("coroutine runs in Main")
}

如果有听说过,一个线程上可以执行多个协程,那么主线程便是一个最好的证明,无论启动多少个执行在主线程的协程,实际上都不会新增线程的消耗,因为在Android平台上主线程有且仅有一个。

4. 需要注意的地方

安卓平台上,建议用安卓实际执行页面代码实践协程,Kotlin相关文档中大量用了runblocking函数,而且在单纯的main函数执行,其实是在Java平台的main函数,和实际的Android平台实际的代码效果可能会有所出入。

别懒,实践才是检验真理的唯一标准!

5. 防杠

这里的样例代码用的是GlobalScope,事实上这是不推荐使用的协程作用域,只是对于开发者来说,过早的接触各种协程作用域的写法其实不一定是好事。

在当前这一小节的初步学习里,并不需要知道协程作用域是什么,只要知道如何启动协程便足够。

错的时间遇见对的人,往往遗憾收场;而对的时间遇见对的人,方可修成正果。

协程作用域这个,在后面适当的实际出场会有更好的学习效果。

先学会走,再学跑。就算是走路,步子一下子迈得太大,也容易扯着……

6. 样例工程代码

代码样例Demo,见Github:https://github.com/TeaCChen/CoroutineStudy

本文示例代码,如觉奇怪或啰嗦,其实为UsageBasicActivity.kt中的代码摘取主要部分说明,在demo代码当中,为提升细节内容,有更加多的封装和输出内容。

本文对应的页面截图如下:


image-1-1.png

一学就会的协程使用——基础篇

一学就会的协程使用——基础篇(一)协程启动(本文)

一学就会的协程使用——基础篇(二)线程切换

一学就会的协程使用——基础篇(三)初遇协程取消

一学就会的协程使用——基础篇(四)协程作用域

一学就会的协程使用——基础篇(五)再遇协程取消

一学就会的协程使用——基础篇(六)初识挂起

一学就会的协程使用——基础篇(七)初识结构化

一学就会的协程使用——基础篇(八)初识协程异常

一学就会的协程使用——基础篇(九)异常与supervisor

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 2021年了,还不知道协程是什么? 如果还在找千万种理由不用协程,相信将会逐渐被时代所抛弃。 学如逆水行舟,不进则...
    TeaCChen阅读 819评论 0 3
  • Kotlin 是一⻔仅在标准库中提供最基本底层 API 以便各种其他库能够利用协程的语言。与许多其他具有类似功能的...
    James999阅读 284评论 0 1
  • 一.第一个程序 通过GlobalScope.launch启动了一个新的协程,协程也可以称之为轻量级的线程,这些线程...
    大虾啊啊啊阅读 486评论 0 1
  • 是什么 官方解释:协程是轻量级的线程,基于线程池API通俗的来说:就是官方提供的线程框架 线程主要用于做耗时操作,...
    Method阅读 929评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,834评论 28 54

友情链接更多精彩内容