Выбор ответа Middle Compose: состояние и side-effects спрашивают часто обновлено

Ключи LaunchedEffect

Вопрос

Когда перезапустится LaunchedEffect(userId) { load(userId) }?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: При изменении userId: текущая корутина отменится, запустится новая. Эффект стартует при входе в композицию и перезапускается при изменении любого из ключей, предыдущая корутина при этом отменяется.

Варианты ответа

  1. При изменении userId: текущая корутина отменится, запустится новаяправильный ответ
  2. При каждой рекомпозиции функции, в которой объявлен эффект
  3. Никогда: эффект выполняется один раз за всю жизнь приложения
  4. При каждом клике на экране, который меняет любое состояние

Разбор

Эффект стартует при входе в композицию и перезапускается при изменении любого из ключей, предыдущая корутина при этом отменяется. Обычная рекомпозиция с тем же userId его не трогает. При выходе из композиции корутина отменяется. «Один раз за жизнь приложения» неверно: после поворота композиция новая, и эффект выполнится снова.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.