Как реализовать постоянную очередь на Android - PullRequest
7 голосов
/ 27 января 2012

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

Я думаю, что очередь должна использовать какое-то хранилище под капотом, предпочтительно внутреннее хранилище устройства.Может быть, вы могли бы сделать мозговой штурм, как это реализовать.Очередь не обязательно должна запускаться в моем приложении, это также может быть какая-то слабо связанная фоновая служба, если это возможно в Android (но только для моего приложения).

Ответы [ 4 ]

8 голосов
/ 02 сентября 2013

May squareup - хороший выбор.

QueueFile - молниеносный, транзакционный FIFO на основе файлов.Добавление и удаление из экземпляра является операцией O (1) и является атомарным.Пишет синхронно;данные будут записаны на диск до завершения операции.Базовый файл структурирован так, чтобы выдерживать процесс и даже сбой системы, и если во время изменения с изменением выдается исключение ввода-вывода, изменение отменяется.

7 голосов
/ 27 января 2012

Я рекомендую использовать столик внутри Sqlite. Я хотел бы создать свой собственный SqliteQueue, который реализует интерфейс очереди. Offer добавит запись в таблицу. Poll вернет запись и удалит ее из таблицы. Для более сложных объектов вы можете использовать GSON для преобразования объекта в строку JSON или преобразования строки JSON в объект.

3 голосов
/ 27 марта 2015

Это хорошая библиотека из Path:

https://github.com/path/android-priority-jobqueue

"Очередь заданий, специально написанная для Android, чтобы легко планировать задания (задачи), которые выполняются в фоновом режиме, улучшая UX и приложениястабильность. "

И предоставляют множество функций, таких как приоритет, проверка сети, обратные вызовы и т. д.

1 голос
/ 27 января 2012

Я вполне уверен, что в Java API нет таких структур данных, но не должно быть никаких проблем при реализации вашего собственного вида Queue. Взгляните на этот документ, который содержит описание механизмов хранения данных в Android. Я бы предложил использовать SharedPreferences, но вы можете выбрать, что больше подходит для вашего приложения. Вы можете расширить одну из коллекций Java, которая реализует интерфейс Queue, и добавить свои механизмы сохранения, используя подходы хранения Android. Надеюсь, это поможет.

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