摘要:
一,常见的协程作用域 协程的作用域用于统一管理协程,包括跟踪所有协程和取消所有协程。 常见的协程作用域有: GlobalScope:它是一种顶级协程。生命周期是进程级别的,只要应用进程还在运行,即使 Activity 或 Fragment 被销毁,此作用域下的协程仍然会执行。 MainScope:只 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(90)
评论(0)
推荐(0)
摘要:
一,例子:协程不能被取消: //处理按钮点击事件 binding.button1.setOnClickListener { runBlocking { val scopeJob = Job() val scope = CoroutineScope(scopeJob) val coroutineJob 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(27)
评论(0)
推荐(0)
摘要:
一,例子:cpu密集型任务会使cancel()无效 代码: //处理按钮点击事件 binding.button1.setOnClickListener { runBlocking { val startTime = System.currentTimeMillis() val job = launc 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(23)
评论(0)
推荐(0)
摘要:
一,两者的相同点和不同点: 共同点 首先,我们来看一下 coroutineScope 和 supervisorScope 的共同特性: 作用域嵌套:两者均可以嵌套在其他作用域中。 结构化并发:它们都强制执行结构化并发,即作用域会等待所有启动的子协程完成之后才会完成自身。 取消传播:从父协程向子协程传 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(57)
评论(0)
推荐(0)
摘要:
一,区别: supervisorScope 的直接子协程是可以捕获到异常的,因为这些 supervisorScope 的子协程需要自己处理异常。 与 supervisorScope 不同的是,coroutineScope 的直接子协程不能捕捉到异常 二,例子:supervisorScope的直接子协 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(18)
评论(0)
推荐(0)
摘要:
一,CoroutineExceptionHandler捕获异常的条件 CoroutineExceptionHandler 捕获异常需要两个条件: 这个异常是自动传播的。 CoroutineExceptionHandler 位于 CoroutineScope 的 CoroutineContext 中, 阅读全文
posted @ 2025-08-09 13:41
刘宏缔的架构森林
阅读(26)
评论(0)
推荐(0)
摘要:
一,CoroutineExceptionHandler不同的用法 统一给父协程定义一个 CoroutineExceptionHandler,如果一个子协程异常了,其他子协程也不需要继续的话就采用 coroutineScope 方法,默认的 Job 就是这种表现,如果一个子协程异常了,其他子协程还需要 阅读全文
posted @ 2025-08-09 13:40
刘宏缔的架构森林
阅读(56)
评论(0)
推荐(0)
摘要:
一,CoroutineContext 协程上下文包含哪些元素? Job:控制协程的生命周期。 CoroutineDispatcher: 指定分发任务的线程,这一项就是我们已经介绍过的调度器:Dispatchers。默认值是 Dispatchers.Default。 CoroutineName:指定协 阅读全文
posted @ 2025-08-09 13:40
刘宏缔的架构森林
阅读(20)
评论(0)
推荐(0)
摘要:
一,代码 代码: //处理按钮点击事件 binding.button1.setOnClickListener { runBlocking { log(1) val job = GlobalScope.launch(start = CoroutineStart.UNDISPATCHED) { log( 阅读全文
posted @ 2025-08-09 13:40
刘宏缔的架构森林
阅读(26)
评论(0)
推荐(0)
摘要:
一,例一:atomic模式启动 代码: //处理按钮点击事件 binding.button3.setOnClickListener { runBlocking { log(1) val job = GlobalScope.launch(start = CoroutineStart.ATOMIC) { 阅读全文
posted @ 2025-08-09 13:40
刘宏缔的架构森林
阅读(19)
评论(0)
推荐(0)
浙公网安备 33010602011771号