2013-02-19 1 views
2

У меня есть данные в моем приложении, которые должны быть обновлены на сервере на основе доступности сети. Я храню эти данные в локальной базе данных на android, используя sqlite. В настоящее время идея:Данные устройства синхронизации с веб-сервером

  1. Данные должны быть вставлены в локальной базе данных SQLite
  2. услуга будет ждать, как только данные вставила его проверяет доступность сети и отправить его на сервер и ждать успеха ответ.
  3. Если ответ получен с сервера, он должен обновить статус синхронизации этой строки sqlite и перейти к следующей строке для отправки данных.

Я хотел бы узнать, как наилучшим способом отправить эти данные в очередь, чтобы отправить их на сервер, кроме того, эта очередь должна прекратить отправлять данные на сервер, когда сеть недоступна. Поскольку в java имеется много очередей, которые queu лучше всего хранить эти данные. Поскольку данные могут вырасти до любого бесконечного размера. Это похоже на проблему Продюсер-Потребитель, но самый эффективный способ ее решения.

Заранее спасибо.

+0

Вы нашли решение. Я должен сделать то же самое. пожалуйста, напишите свой код как ответ с небольшим описанием. спасибо –

+1

Использовать связанную блокирующую очередь, поскольку они доступны на Java. Когда вы вставляете данные в базу данных, одновременно обновляйте очередь. – muneikh

+0

можете ли вы предоставить некоторые ссылки или руководства по этому вопросу. thank you –

ответ

0

Зачем хранить эти данные в очереди, если они уже хранятся в локальной базе данных? Я имею в виду, что произойдет, если ваше приложение будет закрыто, тогда данные в очереди будут потеряны. Просто напишите службу, которая проверяет локальную базу данных для новых записей. Если есть новые записи, попробуйте нажать их на веб-сервер.

+1

Да, вы правы. Данные в очереди будут потеряны, и нет необходимости хранить данные в очереди. Но каков наилучший способ проверить данные из локальной базы данных. Я имею в виду, что создание потока и наличие цикла для непрерывной проверки данных будет излишне использовать циклы процессора. Каким должен быть самый эффективный способ справиться с этим. – muneikh

+0

В этом случае мы можем использовать широковещательный приемник, но что делать, если этот широковещательный приемник запускается более одного раза (например, пользователь постоянно нажимает кнопку, которая добавляет строки в базу данных). В этом случае трансляция будет запускаться столько раз, сколько пользователь нажимает кнопку. Если выполнение предыдущего запроса уже выполняется, а одновременные пожары будут отправлять одни и те же данные несколько раз. – muneikh

 Смежные вопросы

  • Нет связанных вопросов^_^