Выполнение синхронизации с ExecuteOfflineCommand более эффективно - PullRequest
0 голосов
/ 03 июля 2018

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

2-й вопрос, я могу использовать UITimer, чтобы проверить isOffline (), чтобы убедиться, что интернет подключен к формам или нет. Есть ли что-то эквивалентное на странице сервера или где написаны запросы, чтобы увидеть, что Интернет отключен или нет. Когда элемент управления перемещен к запросам и интернет отключен, я вижу, что диалоговое окно, открытое со страницы формы, заморожено на неограниченное время и не заканчивается. Я должен закрыть и заново открыть приложение, чтобы продолжить процесс синхронизации. В то же время я не могу установить тайм-аут для диалога, потому что я не уверен, сколько времени займет полный процесс синхронизации. Пожалуйста, сообщите.

Расширение по той же теме, но я создал новую проблему, чтобы прояснить мои вопросы. executeOfflineCommand пропускает команду при выполнении из хранилища на Android

1 Ответ

0 голосов
/ 04 июля 2018

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

В этом подходе у вас есть алгоритм, подобный этому:

  • Клиент отправляет команду на сервер
  • Сервер возвращает специальный уникальный идентификатор для команды
  • Клиент просит сервер выполнить уникальный идентификатор
  • Сервер подтверждает, что команда была выполнена

Если первые 2 этапа не прошли, просто сделайте это снова. Худшее, что может случиться, - это некоторые потерянные команды на сервере.

Если третий вариант не завершен, просто сделайте это снова. Сервер знает, обработал ли он команду, и просто подтвердит ее, если она уже была обработана.

...