Постоянное поле в сервисе Android - PullRequest
1 голос
/ 06 августа 2009

Мне нужно сохранить сложный объект в моем сервисе, чтобы я мог надежно вернуться к нему (он содержит обновления). Первоначально я закодировал его так же, как класс, хранящийся в моей реализации Сервиса, но я наблюдаю, что объект обновлений периодически сбрасывается в ноль, что говорит мне, что сам класс сервера воссоздается. Может ли кто-нибудь порекомендовать облегченную надежную стратегию для сохранения и воссоздания такого объекта обновлений (я могу сделать его сериализуемым)

Ответы [ 2 ]

4 голосов
/ 06 августа 2009

Когда ваш сервис перезапускается, вызываются методы onStop() и onStart(). Вы можете использовать метод onStop() для сохранения ваших данных в постоянном месте, например, приложение sqlite база данных. Вы можете восстановить данные при вызове onStart().

Вы можете прочитать об использовании базы данных sqlite на сайте разработчика Android .

3 голосов
/ 07 августа 2009

Если бы я делал это, я бы использовал SharedPreferences. Если это слишком сложно для этого, я согласен с @Scharrels об использовании sqlite DB (что, скорее всего, будет рекомендацией Google, поскольку в их примерах используется sqlite в наименьшем числе случаев, что подразумевает разумный уровень производительности).

Я нашел SharedPreferences полезным в ряде случаев. Во-первых, будучи хранилищем пар «ключ-значение», можно легко хранить множество различных данных, плюс вы можете при необходимости закодировать свои объекты в строку и сохранить их в одном поле. Во-вторых, вы можете использовать несколько хранилищ SharedPreference, просто извлекая их под другим именем (при этом сохраняя их конфиденциальность). Наконец, я нахожу их простыми в использовании, поскольку получение и хранение данных - это буквально пара строк кода (не считая обработки или сериализации данных, которые могут вам понадобиться).

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