У меня очень интересный случай. Я включил опцию «не держать действия» в меню параметров разработчика на Android.
Теперь, когда я запускаю приложение, все нормально, приложение запускается нормально.
Позже, когда я нажимаю кнопку «Домой» и выхожу из приложения, я вижу, что вызываются функции onDestroy (), фрагмента onDestroy () и onDetach (). Но когда я снова запускаю приложение, вызываются обратные вызовы onCreate () и onCreateView () фрагмента, , даже если фрагмент еще не добавлен .
И когда платформа приложения инициализируется и впервые добавляет фрагменты, я вижу, что фрагмент все еще находится внутри макета. Я знаю это, потому что объект фрагмента ниже должен сначала быть нулевым, но это не так. Это тот же фрагмент, который был удален после того, как я закрыл приложение раньше.
Fragment fragment = getSupportFragmentManager().findFragmentById(rootFragmentLayoutId);
Как правило, приведенный выше код возвращает ноль при первом запуске, но когда я включаю опцию "не держать действия", он больше не равен нулю.
Это какая-то ошибка с настройкой параметров разработчика? Если нет, то как это вообще возможно? Я боюсь, что у наших пользователей возникнут проблемы из-за этой проблемы.