【发布时间】:2022-01-09 07:01:18
【问题描述】:
我正在更新我的 Kotlin Android 应用以使用 Coroutines 1.5.2(以前使用 1.4.3)。
在 1.5.2 中,GlobalScope.launch 的任何使用现在都被标记为“微妙”:
https://blog.jetbrains.com/kotlin/2021/05/kotlin-coroutines-1-5-0-released/#globalscope
假设我知道自己在做什么(在某些情况下,我需要一个不会随包含的活动/片段消失的范围)。
如何标记这些用途,以免它们被标记?建议使用以下选项,但似乎没有一个很好。
选项 1 - 将 @DecliateCoroutinesApi 添加到方法中。这使得该方法也“微妙”,并且任何对 的调用现在都会得到检查,因此什么也得不到。
选项 2 - 将 @DecliateCoroutinesApi 添加到班级。看起来有点矫枉过正。
选项 3 - 将 @OptIn(DelicateCoroutinesApi::class) 添加到方法中。几乎不错,但需要一个特殊的编译器开关-Xopt-in=kotlin.RequiresOptIn。有点乱。
有什么建议吗?
【问题讨论】:
-
选项#4:创建您自己的
CoroutineScope,拥有您想要的生命周期,然后使用它。