TGViewer
Android Developer Android Developer @android_dev_ru · 1.27K subscribers
Post #31 3.12K
Что такое Activity State Loss Exception? Для чего нужен commitAllowingStateLoss()?

Это два вопроса на одну и ту же тему.
Под Activity State Loss Exception понимается исключение вида:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState with MyFragment.

Это исключение случается, когда метод FragmentTransaction.commit() вызывается после Activity.onSaveInstanceState(). Его не всегда удается поймать во время тестирования, потому что место вызова onSaveInstanceState() зависит от версии ОС.

В чем же причина исключения?
Когда пользователь уходит с активити, состояние сохраняется на случай, если активити будет уничтожена системой. Сохранение состояния происходит в методе onSaveInstanceState(). Если транзакция применяется после сохранения состояния, то транзакция не может быть сохранена и система бросает исключение.
Метод commitAllowingStateLoss() делает то же, что и метод commit(), но говорит системе, что мы готовы к потере состояния и исключение бросать не нужно. commitAllowingStateLoss() замалчивает, а не решает, проблему. Использование commitAllowingStateLoss() приводит к ситуациям такого вида:
Пользователь возвращается на активити, которая была уничтожена системой. Пользователь ожидает увидеть UI, который отображался перед тем как он покинул активити, но транзакция с добавлением или удалением фрагмента не сохранилась и пользователь видит пустой экран или активити в неверном состоянии.

Хорошей практикой считается использование commit(), а не commitAllowingStateLoss(). Если вы получаете репорты о state loss крэшах, пробуйте решить корень проблемы. Для этого не вызывайте commit() в onPause() или следующих после него методах.
  • 👍 8
More from @android_dev_ru
  1. Oct 18, 2026Фоновая синхронизация запускается несколько раз Экран, вход в аккаунт и восстановление сет…
  2. Oct 17, 2026Клавиатура закрывает кнопку: где искать причину Форма помещается на экран, пока не открыла…
  3. Oct 16, 2026Практика · Android После возвращения пропал фильтр поиска Пользователь выбрал категорию, у…
  4. Jun 28, 2026🖥 Китайский разработчик выложил в открытый доступ целую автомобильную ОС, которая превращ…
  5. Jun 28, 2026✏️ Чек-лист: полный контроль качества Перед релизом или крупным обновлением пройдитесь по…
  6. Jun 27, 2026🎁 pod install --repo-update – надежный способ избежать "кэш-проблем" с CocoaPods Эта кома…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →