Я программировал для Android в течение некоторого времени, и я все еще ищу решения для сохранения данных по изменениям конфигурации. Помимо сохранения Parcelable
в Activity Bundle
в onSaveInstanceState
, документы предлагают использовать Fragment
с флагом setRetainInstance
, установленным в true.
Но я только что нашел код, который использует onRetainCustomNonConfigurationInstance
для хранения произвольных объектов (по-фантастически, но по существу больших объектов без ссылок на Activity
и т.д.). Я никогда не видел этот метод, поэтому у меня есть некоторые сомнения:
- Этот метод безопасен для вызова для хранения произвольных объектов (в смысле, что я могу быть уверен, что он будет вызван, и что он не будет устаревшим/удаленным в ближайшее время)?
- Как этот метод отличается от
onRetainNonConfigurationInstance()
, который также должен возвращатьObject
, и по существу должен работать аналогично? - По какой-то причине использование сохраненного фрагмента еще лучше?
В качестве бонуса я был бы признателен за любые другие советы или решения для сохранения состояния таких объектов, как AsyncTask
, Observable
, просмотр презентаторов и продолжение