OnSavedInstanceState против SharedPreferences

У меня есть 7 активных действий с кнопками перемещения вперед и назад между остальными; Активизация состоит из editTexts, Spinners, textViews, TimePickers, DatePickers и флажков.

Я хочу, чтобы все пользовательские интерфейсы присутствовали и сохранялись при навигации по экземпляру приложения; Однако при завершении приложения все нужно по умолчанию.

Моя 8-я деятельность собирает весь пользовательский интерфейс и помещается в электронное письмо. , .fyi

Я много читал об обоих способах onSavedInstanceState & SharedPreferences для сохранения данных, поскольку действия идут взад и вперед. , ,

Что было бы лучше для меня?

Это будет зависеть от того, как вы хотите управлять данными. Возможны оба варианта (и более):

  • Если вы хотите заполнить один раз и сохранить данные, даже если приложение будет убито, используйте SharedPreferences .
  • Если это изменчивые данные, которые нужно будет повторно ввести в другое время (т. onSavedInstanceState Через несколько дней), используйте onSavedInstanceState .
  • Если вы хотите сохранить несколько наборов данных на одном устройстве, используйте SQLiteDatabase

SharedPreferences

  • Используйте для вещей, которые следует всегда помнить, независимо от того, выключен ли телефон (например, для настроек, выбранных на экране настроек вашего приложения

onSavedInstanceState

  • Используйте это для запоминания вещей о текущем состоянии вашей деятельности, таких как текущая выбранная вкладка на экране. Это позволяет вам воссоздать одно и то же состояние после поворота или если приложение было убито из-за низкой памяти.
  • После перезагрузки вещи, сохраненные в onSaveInstanceState будут забыты, и при запуске нового экземпляра активности они не будут переданы, поэтому они предназначены только для запоминания состояния активности

onRetainNonConfigurationInstance

  • Используйте это для хранения объектов, которые требуют много времени для загрузки, так что вам не придется загружать их снова, когда телефон повернут.