And*_*Dev 6 android kotlin-coroutines
在此示例代码中:
class MyFragment: Fragment {
init {
lifecycleScope.launch {
whenStarted {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
whenStarted 中的代码仅在片段的生命周期开始时运行。我不清楚这到底是做什么的,而不仅仅是在 onViewCreated 内部启动一个协程。文档状态:
如果 Lifecycle 在协程通过 when 方法之一处于活动状态时被销毁,则协程将自动取消。
那么这是您使用lifecycleScope.launch 的唯一原因吗?如果生命周期终止,让协程自动终止?
lifecycleScope是SupervisorJob由其生命周期与 的生命周期相关联的 a 管理的范围Fragment。因此,lifecycleScope当底层Lifecycle实例(在本例中为Fragment's LifecycleRegistry)被销毁时,仅通过使用您的协程就会被取消。
我相信这
lifecycleScope.launch { whenStarted {}}是lifecycleScope.launchWhenStarted {}. 如您所料,传入的 lambdalaunchWhenStarted将暂停,直到Fragment处于启动状态。
那么这是您使用lifecycleScope.launch 的唯一原因吗?如果生命周期终止,让协程自动终止?
取消是好处之一。另一个好处是默认使用(与默认lifecycleScope.launch使用的MainDispatcher其他构建器不同Dispatches.Default),因此它保证使用它启动的协程可以执行 UI 操作。
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |