Я программировал для Android в течение некоторого времени, и я все еще ищу решения для хранения данных по изменениям конфигурации. Помимо сохранения Parcelable
s в действии Bundle
в статьях onSaveInstanceState
, рекомендуется использовать Fragment
с флагом setRetainInstance
, установленным в true.Использование `onRetainCustomNonConfigurationInstance` для сохранения данных при изменении конфигурации
Но я только что натолкнулся на какой-то код, который использует onRetainCustomNonConfigurationInstance
для хранения произвольных объектов (по-фантастически, но по существу больших объектов без ссылок на Activity
и т. Д.). Я никогда не видел этот метод используется, поэтому у меня есть некоторые сомнения:
- этот метод безопасен для вызова для хранения произвольных объектов (в том смысле, что я могу быть уверен, что он собирается дозвонился, и что он выиграл» t быть устаревшим/удаленным в ближайшее время)?
- Как этот метод отличается от
onRetainNonConfigurationInstance()
, который также должен возвращатьObject
, и по существу должен работать аналогичным образом? - Использует сохранившийся фрагмент еще лучше, почему-то?
В качестве бонуса, я был бы признателен за любые другие советы или решения для сохранения состояния объектов как AsyncTask
, Observable
, предъявителей зрения и перейти на
http://stackoverflow.com/questions/15749106/onsaveinstancestate-vs-onretaincustomnonconfigurationinstance – petey
Я использую 'андроида: configChanges = "клавиатура | keyboardHidden | ориентирование | screenLayout | uiMode | Размер экрана | smallestScreenSize"' 'для моего Activities'. Взято с https://developers.google.com/admob/android/quick-start. Предположительно, это не «лучшее» решение, но оно работает лучше, чем все, что я видел. –
@JaredBurrows Я ценю ваш комментарий, но я разделяю мнение, что это не только * не лучшее решение *, но и неправильный и вредный способ справиться с потерей состояния в приложениях Android. Плюс это на самом деле не решает проблему (например, приложение подходит к фону) – wasyl