2015-06-19 1 views
1

Хороший подход к сохранению коллекций java при использовании onsaveInstanceState/onRestoreInstanceState flow?OnSaveInstanceState/OnRestoreInstanceState с коллекциями java

У меня есть активность, которая заполняет некоторую информацию, используя некоторые java-коллекции (например, ArrayList, содержащие объекты типа A). Эта информация заполняется ListView, как и обычные приложения для Android. Кроме того, каждая строка начнет подробное действие для результата (startActivityForResult(...)) и, как ожидается, сделает некоторые обновления, когда вернется (используя onActivityResult).

В целях тестирования я включил функцию «Не выполнять действия» в настройках разработчика устройства, чтобы увидеть, сбой приложения. Логически, когда моя родительская активность будет удалена, все объекты исчезнут. Когда я вернусь к этому действию (onActivityResult), мой список пуст/null.

Мой вопрос, это хороший подход, чтобы сохранить свой список в onSaveInstanceState и восстановления находится на onRestoreInstanceState метод для того, чтобы предотвратить пустые списки или достаточно, чтобы проверить, если список пустой на onActivityResult метод? Это будет зависеть от моей логики действий? Или это хорошая практика, чтобы сохранить все элементы, которые будут использоваться по методу onActivityResult?

ответ

1

Ну, если вы этого не сделаете, ваше приложение сработает правильно? :)
Я думаю, что это хороший подход для сохранения всех ваших объектов с помощью onSaveInstanceState, потому что Android восстановит только вашу логику макета Views, а не вашу логику модели данных, это зависит от вас. И не забывайте, что вы испытываете это в onActivityResult, но если ваше приложение переходит на фон, скажем, вы получите телефонный звонок, когда вы вернетесь, будет вызван onResume, и ваша модель данных будет равна нулю в этот момент. Поэтому жизненный цикл активности onSaveInstanceState и onRestoreInstanceState всегда должен быть реализован, если вам необходимо сохранить модель данных. Конечно, это будет зависеть от вашей логики, потому что если вы получите все свои данные в onResume, у вас никогда не будет этой проблемы.

Подробнее здесь: onSaveInstanceState и onRestoreInstanceState

пс: Ваш Objects необходимо реализовать Serializable или Parcelable