Вступить в клуб →
сложнаявопросKotlin и жизненный цикл Android

Краш при показе диалога из колбэка, пришедшего после сворачивания

В Crashlytics регулярно приходит IllegalStateException с текстом о выполнении действия после сохранения состояния. Стек указывает на транзакцию фрагментов: ответ от сервера приходит асинхронно, и в обработчике показывается диалог с результатом. Воспроизводится, если свернуть приложение сразу после отправки запроса.

Какое решение здесь правильное?

  • Показывать диалог, только когда экран не ниже состояния STARTED, а пришедший раньше результат держать в состоянии
  • Обернуть транзакцию в try/catch: исключение перехватывается, а диалог откроется при следующем показе экрана
  • Использовать транзакцию с разрешённой потерей состояния — это штатный способ убрать такой краш без изменения логики экрана
  • Перенести показ диалога в момент создания экрана: там состояние ещё не сохранено, и транзакция пройдёт без исключения

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела