Котлин сопрограмма - что такое область по умолчанию? - PullRequest
0 голосов
/ 24 февраля 2019

Как работает область действия по умолчанию для сопрограмм, если я ничего не указываю.Давайте посмотрим на этот пример:

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

, который просто обновляет пользовательский интерфейс при получении контакта.это добавляется к глобальной области видимости, так что продолжительность жизни сопрограммы может быть такой же, как и у всего приложения.

, но позволяет сделать то же самое снова без globalScope:

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

что такоесрок службы getContact теперь, когда я удалил globalScope?это связано с областью действия MyAppCompatActivity?

1 Ответ

0 голосов
/ 24 февраля 2019

Ваш код не будет скомпилирован, потому что launch должен быть вызван для CoroutineScope объекта.Этот объект определяет срок жизни сопрограммы.Поскольку ваша деятельность не реализует область действия, она не сможет скомпилировать или вызвать совершенно не связанную функцию launch.

...