SupervisorJob 、 Job 可以在开启一个协程时设置任务类型,默认开启一个协程方式为 launch(){...} 内部实现为Job(coroutineContext[Job]),也可以通过 launch(SupervisorJob(coroutineContext[Job])) { } , async(SupervisorJob(coroutineContext[Job])) { } 方式指定Job类型,它的...
4.CoroutineScope CoroutineScope 在 Kotlin 中是 Coroutine 官方 API 的核心之一,它负责协程的生命周期管理、协程上下文及其它信息。 CoroutineScope 可以理解为协程的执行环境,它关联了多个协程及其上下文(context),并提供了一些对协程的管理方法,例如 launch、async 等等。 CoroutineScope实现的启动协程的示例: val scope...
DefaultDispatcher-worker-1 @coroutine#1 1 Test worker @coroutine#1 2 1 2 从上结果可以看出,withContext会阻塞上下文线程 3. 有返回值,会返回代码块的最后一行的值 withContext有返回值,会返回代码块的最后一行的值,如下所示: runBlocking<Unit> { val t = withContext(Dispatchers.IO){ delay(1000) println...
一. withContext 与launch、async、runBlocking 类似 withContext 也属于 Coroutine builders。不过与他们不同的是,其他几个都是创建一个新的协程,而 withContext 不会创建新的协程。withContext 允许更改协程的执行线程,withContext 在使用时需要传递一个 CoroutineContext 。 代码语言:javascript 代码运行次数:0 运行 AI代...
* coroutine - 协程 * 本利用于演示协程基础,包括 CoroutineScope, 为 CoroutineScope 扩展方法, runBlocking, launch, async, await, suspend, withContext, 设置/获取 CoroutineScope 的名称 * * 进程是资源分配的最小单位,不同进程之间资源都是独立的
上一小节,学习了GlobalScope.launch、runBlocking、launch、coroutineScope这几种作用域构建器,都可以用来创建协程作用域。GlobalScope.launch和runBlocking函数是可以在任意地方调用,coroutineScope函数可以在协程作用域或挂起函数中调用,而launch函数只能在协程作用域中调用。
前面我们提到 launch 函数有三个参数,第一个参数叫 上下文,它的接口类型是 CoroutineContext,通常我们...
launch( + CoroutineName("test")) { println("thread: ${Thread.currentThread().name}") } } 1. 2. 3. 4. 5. 6. 协程上下文的继承 对于新创建的协程,它的CoroutineContext会包含一个全新的Job实例,它会帮助我们控制协程的生命周期。 剩下的元素会从CoroutineContext的父类继承,该父类可能是另外一个协...
协程(coroutines)是一种并发设计模式,您可以在Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念。 在Android 上,协程有助于管理长时间运行的任务,如果管理不当,这些任务可能会阻塞主线程并导致应用无响应。使用协程的专业开发者中有超过 50% 的人反映...
CoroutineScope 使用简述 一、GlobalScope 使用简述 GlobalScope 继承于 CoroutineScope (接口),其源码实现是一个全局的单例,因为是单例,其生命周期跟随与整个应用程序的生命周期;可使用 GlobalScope.launch 启动一个顶层协程。 GlobalScope 使用举例 GlobalScope 简要说明 1.1 GlobalScope 使用举例 引入依赖包: 首先需要引...