#android #kotlin #kotlin-coroutines
#Android #kotlin #kotlin-сопрограммы
Вопрос:
Какова наилучшая практика использования CoroutineScope
(MainScope в Android)? Ниже приведен пример, который определяет область видимости как переменную, которую можно использовать повторно, это позволяет мне выполнять все задания, выполняемые в области видимости, когда я выхожу из действия.
val mainScope = MainScope()
// do something scope
mainScope.launch { ... }
mainScope.launch { ... }
mainScope.launch { ... }
mainScope.cancel()
Или этот подход, когда я просто вызываю MainScope
, а затем выполняю работу, которую я хочу в этой области.
MainScope().launch { ... }
MainScope().launch { ... }
MainScope().launch { ... }
Ответ №1:
Ваши примеры не так уж сильно отличаются. При повторном использовании одной области у вас есть возможность отменить их все (когда они взаимодействуют).
Когда вы создаете новые области, вам нужно сохранить все Job
, чтобы отменить их. И пока ваши области имеют точно такую же конфигурацию (как в вашем примере) Я не вижу смысла каждый раз создавать новые области.
LifecycleScope
Рассмотрите возможность использования lifecycleScope, когда вы находитесь в Activity или Fragment (в основном, в любом LifecycleOwner).
Эта область будет отменена при уничтожении жизненного цикла.
Комментарии:
1. И используйте встроенное свойство
viewModelScope
в классе ViewModel.