Какова оптимальная практика для Android для хранения данных между активностями / перезапусками для всего сеанса приложения? - PullRequest
7 голосов
/ 09 января 2010

Мы разрабатываем приложение для Android, в котором есть несколько действий, которые работают аналогично мастеру - пользователь должен перейти от действия № 1 к занятию № 5, чтобы перейти к последнему занятию (# 6).

Поскольку мы знаем, что действие может быть внезапно прервано операционной системой при нехватке памяти, мы использовали класс Application в качестве статического хранилища для хранения данных, которые пользователь вводит в действиях "wizard", и других данных, необходимых нашему приложению для всего сеанса.

К сожалению, мы обнаружили, что этот подход не работает - похоже, что экземпляр класса Application также может быть уничтожен ОС (это было специально обнаружено в Android 1.6 по сравнению с 1.5). Являются ли наши ожидания неверными при таком подходе (мы думаем, что экземпляр класса приложения всегда живет весь сеанс приложения)?

Таким образом, вопрос заключается в следующем: каковы наилучшие практики для Android по хранению данных между активностями в течение всего сеанса приложения?

Ответы [ 2 ]

10 голосов
/ 09 января 2010

Мы разрабатываем приложение для Android, которое имеет несколько видов деятельности, которые работает в стиле мастера как пользователь должен перейти от упражнения № 1 к занятие № 5, чтобы попасть в финал деятельность (# 6).

Вы уверены, что должны реализовывать их как отдельные виды деятельности? Почему бы не одно действие, использующее ViewFlipper или что-то для перемещения между состояниями мастера?

Наши ожидания неверны подход (мы думаем, класс приложения экземпляр всегда живет для всего сеанс приложения)?

Экземпляр класса Application всегда работает в течение всего сеанса приложения AFAIK. Однако, как только все ваши действия будут уничтожены, Приложение также будет уничтожено.

Так что вопрос - что лучше практики на Android, чтобы сохранить данные между действиями / перезапусками за весь сеанс приложения?

  1. Используйте Service - если это вылетело из ОЗУ, просто начните все заново
  2. Использовать базу данных
  3. Использовать файл

Или, лучше: не используйте несколько действий в этом случае. Волшебник - это одна логическая вещь; относитесь к нему как к таковому и сделайте его одним видом деятельности. Сохраняйте свое состояние с помощью onSaveInstanceState(), и все готово.

0 голосов
/ 09 января 2010

Если данные, которые пользователь вводит и которые необходимо сохранить, представляют собой просто набор примитивов, вы можете просто использовать SharedPreferences в качестве постоянного хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...