Каков наилучший способ сохранить этот ArrayList?
Я не понимаю, где ваша проблема связана с несколькими действиями. Что произойдет, если пользователь нажмет HOME (задыхаясь!), Например? Ваше приложение в конечном итоге будет закрыто. Вы хотите перезагрузить данные с сервера? Если ответ «да», вам не нужно ничего «настаивать», и onSaveInstanceState()
может быть достаточно (см. Ниже). Если ответ «нет», то вам нужно переосмыслить свой подход к модели данных, чтобы вы организовали хранение данных в базе данных, периодически синхронизируя их с вашим веб-сервисом, и, вероятно, выгрузив ArrayList
и заменив его на Cursor
.
onSaveInstanceState поддерживает только примитивы
Если ответ на мой вопрос HOME - «да», тогда вы можете просто удерживать данные в элементе данных вашей деятельности и, если они скромного размера, также сохранить их в Bundle
в onSaveInstanceState()
. Bundle
может содержать ArrayList
из Parcelable
. Однако, если набор данных большой (скажем, 100 КБ или более), вы, вероятно, не хотите идти по этому пути и должны рассмотреть путь «нет», который я описал выше.
Мне не удалось настроить случай, когда onRetainNonConfigurationInstance действительно вызывается.
Поворот экрана. Существуют и другие сценарии, но изменения ориентации легче всего вызвать.
Однако это не имеет ничего общего с вашей проблемой.