首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >旋转碎片时使用哪一种坐标范围?我们能从视觉模型中发射协同线吗?

旋转碎片时使用哪一种坐标范围?我们能从视觉模型中发射协同线吗?
EN

Stack Overflow用户
提问于 2021-04-19 17:28:02
回答 1查看 346关注 0票数 0

在片段中,当通过协同线执行保存操作时,应该使用的哪种类型的作用域作为主要考虑因素--旋转设备不应停止协同线?

我应该在哪里保存coroutine 作业引用,以便允许用户在仍在执行时随时取消它?即使是在轮换之后,如果愿意的话?如果我将作业放在ViewModel中以便在设备rotation之后恢复它,那么它是否泄漏了片段的lifecycleScope

我知道片段有一个作用域,例如:

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

但我不确定这是否是正确的使用,因为我假设旋转设备可能取消它。

此外,我也不知道下一次是否正确:

代码语言:javascript
运行
复制
CoroutineScope(Dispatchers.IO)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 17:41:14

ViewModel中,u可以使用viewmodelscope来表示一个协同线“-

代码语言:javascript
运行
复制
viewModelScope.launch {
    // Coroutine that will be canceled when the ViewModel is cleared.
}

然后,您可以使用liveDatafragment通信,因为liveData和视图模型都知道它也会处理旋转场景。

它应该能解决你的目的。

要使用viewModelScope,我们需要生命周期版本2.2.0及以上版本

代码语言:javascript
运行
复制
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67166641

复制
相关文章

相似问题

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