Решение для очереди сообщений для действий, которые приходят и уходят на Android? - PullRequest
0 голосов
/ 16 апреля 2011

Допустим, у меня есть Service S и Activity A. S загружает данные для A (или обрабатывает какую-то длительную работу, что угодно), но A не всегда присутствует. Я не хочу, чтобы S зависал, когда очередь заданий пуста: S должен публиковать результаты готовых работ в каком-то почтовом ящике для A, чтобы A мог получать сообщения, когда он возвращается снова.

Может ли это быть достигнуто без использования SQLite хранилища файлов для реализации почтового ящика? Я бы предпочел более быстрый механизм, операции записи на устройстве, как правило, довольно медленные. Я думал об использовании простого статического списка внутри ApplicationContext, но на самом деле полагаться на ApplicationContext приводит к рискованному / хрупкому решению.

Может ли кто-нибудь порекомендовать шаблон для этой проблемы?

1 Ответ

1 голос
/ 16 апреля 2011

Может ли это быть достигнуто без использования SQLite хранилища файлов для реализации почтового ящика?

Не надежно. Либо это файл, либо он может быть уничтожен, прежде чем А вернется снова. Помните, что ваш процесс, в котором находятся все ваши статические члены данных и объект Application, не существует вечно. Как только S выключается (что является хорошим , спасибо!), Android может прекратить процесс, забрав свой «почтовый ящик» с собой, если он находится только в оперативной памяти.

Вы можете сохранить его на диске, но сохранить в качестве кэша одиночный файл или что-то еще, поэтому, если A быстро возвращается, вы можете пропустить некоторые операции ввода-вывода. Или, если на самом деле не имеет большого значения, существуют ли сообщения для A, вы можете оставить их в оперативной памяти и просто пожать плечами, если процесс завершится первым.

...