使用Kotlin协程时,最佳实践是使用GlobalScope.launch()还是继承GlobalScope?

时间:2019-02-05 23:50:22

标签: kotlin kotlinx.coroutines

我在公司中看到了协程的两种不同用法,我想知道哪种最好?

用法1

GlobalScope.launch(Dispatchers.IO) {
    loadMyData()
}

用法2

class MyClass(): GlobalScope {
. . .
    launch(Dispatchers.IO){
        loadMyData()
    }
. . . 
}

一个比另一个好吗?每种都有什么优缺点?

1 个答案:

答案 0 :(得分:0)

还有第三种选择

class MyClass(): CoroutineScope by GlobalScope

但是在考虑如何实现该问题时,您应该问一个简单的问题:您是否希望MyClass成为CoroutineScope并可以被代码库的其他部分使用? >

大多数情况下,答案应该为否,因此直接使用GlobalScope可能会更好。

我还假设GlobalScope是这里使用的范围,而没有详细说明为什么不考虑使用它。