首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coroutine片段范围分析

Coroutine片段范围分析
EN

Stack Overflow用户
提问于 2020-09-07 20:57:06
回答 1查看 2.8K关注 0票数 3

我有一个网络电话可以得到一些LiveData。LiveData是与我的片段的生命周期所有者一起观察的,因此UI更新是安全的。但是,我发出的协同调用也需要限定到碎片的生命周期所有者吗?换句话说,我用哪一种,有关系吗?

代码语言:javascript
复制
CoroutineScope(Dispatchers.IO).launch

代码语言:javascript
复制
fragment.lifecycleScope.launch(context = Dispatchers.IO)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-08 03:44:45

CoroutineScope是一个CoroutineScope(Dispatchers.IO).launch{},它启动其中的所有协同线并返回一个协同作业。但是,如果您的活动/片段/视图模型被破坏,则需要调用cancel()来停止此范围内所有的攻击协同。如果在此之后任何协同线在后台继续运行,则可能导致内存泄漏。

fragment.lifecycleScope.launch(context = Dispatchers.IO){}是一个生命周期感知的协同作用域,因此如果生命周期(活动/片段/视图模型)被销毁,在这个范围内启动的任何协同机制都会被自动取消。

最好在lifecycleScope中使用协同机制,这样您就不必管理协同作业的生命周期了

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63784156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档