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

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

你可能感兴趣的:(一学就会的协程使用——基础篇(一)协程启动)