Android предотвращает восстановление активности

У меня есть viewpager, содержащий много фрагментов. Когда действие отправляется на задний план и когда нужны ресурсы, ОС будет убивать приложение или, по крайней мере, некоторые фрагменты. Когда я возвращаюсь к активности, он падает, потому что активность пытается присоединить новые экземпляры всех фрагментов, которые она провела перед очисткой, и теперь некоторые поля имеют нулевое значение. Это, конечно же, можно было бы исправить, правильно выполнив сохранение состояния и восстановление с помощью Bundles, но я не хочу этого делать. Вместо этого я хочу предотвратить восстановление фрагментов. Есть ли способ сообщить OS, что после отправки GC и уничтожения фрагментов он не должен беспокоить их воссоздание вообще? Как только очистка произойдет, я хочу, чтобы активность была просто воссоздана по возвращении, как если бы пользователь запустил ее, нажав на значок. Есть ли шансы на это?

Предлагаемое решение здесь https://stackoverflow.com/a/15683289/552735 не работает. Он вызывает исключения java.lang.IllegalStateException: Fragement больше не существует для ключа f2: index 3

Solutions Collecting From Web of "Android предотвращает восстановление активности"

У меня была проблема именно так. Вот как я его исправил:

  @Override protected void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.clear(); } 

Обратите внимание, что этот метод гарантирует, что информация о состоянии пользовательского интерфейса не будет сохранена, когда активность будет убита системой, – это также приводит к восстановлению каких-либо представлений, когда onRestoreInstanceState() с тем же Bundle после onStart() .

Вы не можете отключить действия состояния экземпляра save / restore. Если вы не хотите реализовать эту логику, вам необходимо перезагрузить форму, особенно если ваша форма сильно загружена фрагментами.

 @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); startActivity(new Intent(this,YOUR_ACTIVITY.class)); finish(); }