Я имею в виду, зачем использовать Fragment # setRetainInstance (boolean)?
Причина, по которой я спрашиваю об этом, заключается в том, что Activity
обрабатывает ротацию, официальная документация по работе побуждает нас отключать Activity
и перезапускать ее во время ротации.
android: configChanges Отображает изменения конфигурации, которые будут обрабатывать сама деятельность. Когда во время выполнения происходит изменение конфигурации, активность отключается и перезапускается по умолчанию, но объявление конфигурации с этим атрибутом предотвратит перезапуск активности. Вместо этого активность остается запущенной и вызывается метод onConfigurationChanged(). Примечание. Использование этого атрибута следует избегать и использовать только в качестве последнего. Пожалуйста, прочитайте "Обработка изменений времени выполнения" для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации.
Любая попытка изменить это поведение по умолчанию по умолчанию кажется плохой практикой. Чтобы избежать активности при перезагрузке временной структуры данных во время перезапуска, мы используем onRetainNonConfigurationInstance
и getLastNonConfigurationInstance
. - Официальные изменения времени выполнения
Однако, когда приходит к обработке вращения во Фрагменте, Google дает нам разные рекомендации? Они не хотят, чтобы мы закрывали и перезапускали Фрагмент?
public Object onRetainNonConfigurationInstance()
Этот метод устарел на уровне API 13. Вместо этого используйте новый API-интерфейс фрагмента setRetainInstance (boolean); это также доступно на старых платформах через пакет совместимости с Android.
- Почему Google побуждает нас отключать и перезапускать Activity во время ротации, но поощрять нас удерживать фрагмент во время вращения?
- Если
setRetainInstance(true)
подходит для обработки вращения, почему Google не делает это как поведение по умолчанию Fragment?