kotlin coroutine - 什么是默认范围?

问题描述 投票:0回答:1

如果我没有指定任何内容,协程默认范围如何工作。让我们来看看这个例子:

class MyAppCompatActivity:AppCompatActivity{
fun getContact() {
        GlobalScope.launch {
            val contact = contacts.getContact() // suspended function
            withContext(Dispatchers.Default) {
               phoneContact.value = contact }
        }
    }
}

它只是在检索联系人时更新UI。这被添加到全局范围,因此协程寿命可以是整个应用程序的寿命。

但是如果没有globalScope,我们可以再做同样的事情:

class MyAppCompatActivity:AppCompatActivity{
fun getContact() {
        launch {
            val contact = contacts.getContact() // suspended function
            withContext(Dispatchers.Default) {
               phoneContact.value = contact }
        }
    }
}

现在我删除了globalScope,getContact的生命周期是多少?它与MyAppCompatActivity范围有关吗?

kotlinx.coroutines
1个回答
1
投票

您的代码将无法编译,因为必须在launch对象上调用CoroutineScope。该对象指定协程的生命周期。由于您的活动未实现范围,因此无法编译或调用完全不相关的launch函数。

© www.soinside.com 2019 - 2024. All rights reserved.