协程的作用域是指协程所在的上下文环境,包括协程的启动模式、父子关系、异常处理、取消机制等。协程作用域的设计可以帮助我们更好地管理协程,避免协程泄漏、异常处理不当等问题。 Kotlin协程提供了如下作用域: 1. GlobalScope:全局协程作用域,不受限制地启动协程。使用GlobalScope启动的协程无法取消,容易导致内存泄漏。 2...
coroutineScope是 挂起函数 , 只能在 协程体 中使用 , 该协程会在另外的独立的线程执行 协程任务 , 不会干扰当前启动协程的线程 ; 函数原型如下 : public suspend fun <R> coroutineScope(block: suspend CoroutineScope.() -> R): R 1. 共同点 : 这两个 协程作用域构建器 构建的协程 都会等待 协程体 ...
如果在 协程作用域 中 , 执行一个挂起函数 , 如 delay 函数 , 则可以不用 Dispatchers.IO 是协程任务调度器 , 执行挂起函数 , 系统会自动分配一个 协程任务调度器 ; 二、取消 MainScope 协程作用域 调用MainScope 协程作用域 的 cancel 函数 , 即可取 消该 协程作用域 , 同时 该协程作用域内的协程任务...
mainScope.launch{// 协程作用域, 在该代码块中执行协程任务// Dispatchers.IO 是协程任务调度器, 用于执行耗时操作withContext(Dispatchers.IO){Log.i("MainActivity","withContext : 协程中执行耗时操作")}// 挂起函数, 可以不使用协程调度器delay(20000)// 主线程更新 UILog.i("MainActivity","GlobalScope ...
协程可以切换上下文(所处的线程等)。 Scope(作用域) 为了便于管理协程,协程库引入了协程作用域。 协程作用域是协程的具体表现形式,协程在协程作用域内创建并执行。 协程作用域的类型是CoroutineScope 协程作用域 GlobalScope(全局作用域) CoroutineScope(普通作用域) ...
这里多了一个泛型参数T,T表示返回值类型,通过它的await函数可以拿到这个返回值,因此await函数的主要作用有:在协程执行完成时,立即拿到协程的结果;如果协程尚未完成,则挂起协程,直到它完成,这一点和join类似。下面,给出await函数的定义: classDeferredCoroutine<T>(context:CoroutineContext):AbstractCoroutine<T>(context...
coroutineScope是一个挂起函数,它创建一个新的协程作用域并在该作用域内启动协程。它会等待所有子协程完成后才会继续执行后续代码。coroutineScope主要用于限制子协程的生命周期与父协程相同。 suspend funmain()=coroutineScope{launch{delay(1000L)println("Task from coroutine scope")}println("Coroutine scope is ove...
GlobalScope.launch()属于协程构建器Coroutine builders,Kotlin 中还有其他几种 Builders,负责创建协程: runBlocking:T 使用runBlocking顶层函数创建,会创建一个新的协程同时阻塞当前线程,直到协程结束。适用于main函数和单元测试 launch 创建一个新的协程,不会阻塞当前线程,必须在协程作用域中才可以调用。它返回的是一个该...
2.它们都会等待期协程体以及所有子协程结束,主要区别在于runBlocking 方法会阻塞当前线程来等待,而coroutineScope 只是挂起,会释放底层线程用于其他用途 coroutineScope 与supervisorScope 1.coroutineScope :一个协程失败了,所有其他兄弟协程也会被取消 2.supervisorScope:一个协程失败了,不会影响其他协程 ...
二、协程作用域构建器 ( coroutineScope 函数 | supervisorScope 函数 ) 1、协程作用域构建器概念 2、coroutineScope 协程作用域构建器 示例 3、supervisorScope 协程作用域构建器 示例 一、结构化并发 在 【Kotlin 协程】协程底层实现 ② ( 协程调度器 | 协程任务泄漏 | 结构化并发 ) ...