Выбор ответа Senior Flow, StateFlow и SharedFlow обновлено
Зачем WhileSubscribed(5000)
Вопрос
Зачем в stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), initial) задержка 5000 мс?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Не останавливать upstream при коротком уходе, например при повороте. WhileSubscribed(stopTimeoutMillis) держит upstream активным, пока есть подписчики, и останавливает его через указанное время после ухода последнего.
Варианты ответа
- Чтобы первое значение пришло подписчику через 5 секунд
- Не останавливать upstream при коротком уходе, например при поворотеправильный ответ
- Чтобы upstream перезапускался каждые 5 секунд заново
- Чтобы ограничить время сбора upstream пятью секундами
Разбор
WhileSubscribed(stopTimeoutMillis) держит upstream активным, пока есть подписчики, и останавливает его через указанное время после ухода последнего. При повороте экрана UI отписывается и подписывается снова за доли секунды, и 5 секунд хватает, чтобы не перезапускать запрос. Если приложение ушло в фон, поток через 5 секунд остановится и не будет тратить ресурсы. Задержки первого значения и периодического перезапуска это не даёт.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.