2014-01-27 4 views
0

У меня есть база данных SQLite, которая сохранит все данные в приложении Android. Затем он проверяет, есть ли у него сетевое соединение. Если он отправит сообщение JSON в веб-службу Restful.Работа с потерянной соединительной вставкой

Я собирался сделать это прямо к веб-службе, а затем сохранить его в базе данных SQLite, если не было никакого соединения, но что, если соединение потеряно на полпути через передачу?

Что делать, если я потеряю подключение к сети? Мое предложение по этому вопросу будет следующий

  • Вставки данных в базу данных SQLite для хранения данных
  • Проверьте подключение каждое 5mins. (Что делать, если пользователь получает соединение между ними, а затем вставляет данные?)
  • Если у них есть соединение - получить результаты базы данных SQLite, проверить их на базе базы данных MySQL и вставить любые поля, которые не существуют? (Возможно, отметьте в базе данных флаг, чтобы узнать, был ли он опубликован)

Это хороший способ сделать это? Или я думаю об этом неправильно?

Благодаря Джеймс

ответ

2

Рассмотрим использование какой-то очереди в вашем Android приложение, которое будет содержать запросы от вашего веб-сервиса, пока они не будут завершены успешно.

http://en.wikipedia.org/wiki/Queue_(abstract_data_type)

+0

Ok - Я не думаю, что делать это таким образом. Я храню объект JSON в очереди? что, если пользователь выходит из приложения? –

+1

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

+1

Хорошо, что имеет смысл. Просто вопрос, я создаю Worker Thread, который продолжает пытаться, пока не будет установлено соединение. Если у него есть соединение, отправьте объект JSON в базу данных MySQL? Итак, нет реальной необходимости хранить данные в базе данных SQLite? Мне лучше просто получать все данные, если приложение отключается и просто сохраняет вставку в очереди? –

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