tgoop.com/android_live/908
Last Update:
Как устроен viewModelScope?
#android
При работе с coroutines
мы частенько можем забыть отменить нужную нам джобу в тот момент, когда она нам больше не нужна. К счастью для нас, существует viewModelScope
, который уничтожает ненужные coroutines
в тот момент, когда уничтожается ViewModel
.
❓Давайте рассмотрим чуть детальнее, как он работает внутри.
Класс ViewModel
содержит внутри Map
объектов, кототорые могут содержать любой тип объектов.
Нам интересен метод clear()
, который вызывается перед методом onCleared()
и который мы можем переопределить в нашей модели. Тут вызывается метод closeWithRuntimeException()
, который как раз и завершает нужный нам Scope, так как он имплементирует интерфейс Closeable.
Подобное поведение можно было довольно просто организовать и самостоятельно, однако пришлось бы сделать кастомный Scope
и завершить его в нужном нам месте. Разработчики Jetpack нам чуть-чуть упростили задачу.
Ещё больше почитать о внутренней работе ViewModel можно тут.
BY Android Live 🤖

Share with your friend now:
tgoop.com/android_live/908