Ответ вслух Middle Жизненный цикл обновлено

Жизненный цикл приложения во Flutter

Вопрос

Как отследить, что приложение ушло в фон или вернулось, и какие задачи вы так решали?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «Состояние приложения приходит через WidgetsBinding. Раньше я подключал миксин WidgetsBindingObserver и метод didChangeAppLifecycleState, сейчас удобнее AppLifecycleListener с колбэками onPause, onResume, его нужно освободить в dispose.

Что должно прозвучать в ответе

  • `AppLifecycleState`: resumed, inactive, hidden, paused, detached

  • Подписка через `WidgetsBindingObserver` или `AppLifecycleListener`, отписка в `dispose`

  • Примеры: пауза видео, сохранение черновика, переподключение сокета, обновление данных при возврате

  • При уходе в фон нельзя рассчитывать на долгую работу: ОС может приостановить или убить процесс

  • Фоновые задачи через платформенные механизмы (WorkManager, BGTaskScheduler), а не через таймеры Dart

Что могут спросить следом

  • Чем inactive отличается от paused?
  • Как сохранить данные, если ОС убьёт приложение в фоне?

Разбор

Образцовый ответ: «Состояние приложения приходит через WidgetsBinding. Раньше я подключал миксин WidgetsBindingObserver и метод didChangeAppLifecycleState, сейчас удобнее AppLifecycleListener с колбэками onPause, onResume, его нужно освободить в dispose. Состояния: resumed активное, inactive видно без ввода, например звонок, hidden и paused в фоне, detached без окна. На практике при paused я ставлю видео на паузу, сохраняю черновик формы и закрываю сокет, а при resumed переподключаюсь и обновляю данные, если прошло много времени. Важно помнить, что в фоне ОС может приостановить и убить процесс, поэтому сохранять нужно сразу, а долгую фоновую работу делать через платформенные механизмы вроде WorkManager»

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

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