【问题标题】:Performing the synchronization with ExecuteOfflineCommand more effectively使用 ExecuteOfflineCommand 更有效地执行同步
【发布时间】:2018-07-04 11:52:12
【问题描述】:

我想知道有没有办法识别 OfflineComamd 正在执行或内部标志或表示此命令已通过或标记已成功执行的东西。我在识别命令是否通过不稳定的互联网时遇到问题。我不断从数据库中检索记录并每次比较以查看是否已通过。但是由于我的应用程序的流程,我发现很难避免重复。是否有任何自动流程来确保自动执行命令或其他方式?

第二个问题,我可以使用 UITimer 检查 isOffline() 以确保表单上已连接互联网。服务器页面上是否有类似的东西,或者在哪里写查询以查看互联网是否断开连接。当控件移动到查询并且互联网断开连接时,我看到从表单页面打开的对话框被无限期冻结并且不会结束。我必须关闭并重新打开应用程序才能继续同步过程。同时我无法为对话框设置超时,因为我不确定完成同步过程需要多长时间。请指教。

扩展同一主题,但我创建了一个新问题只是为了更清楚地说明我的问题。 executeOfflineCommand skips a command while executing from storage on Android

【问题讨论】:

  • OfflineCommand 不是代号一类 AFAIK。如果你的项目中定义了那个类,你不能给它添加一个标志吗?
  • 是的,Shai。我做到了。但问题是当设备不断离线和在线时。如何在设备断开连接之前识别命令已成功执行?有什么东西我可以像 UITimer 一样运行,以确保在执行查询之前或期间连接处于活动状态。如果这听起来很愚蠢,请原谅。请指教。
  • 看我的回答。问题是脱机可能发生在执行过程中。唯一 100% 确定可靠地实现离线/在线的方法是借助服务器。
  • 知道了。当然是夏。谢谢。

标签: codenameone


【解决方案1】:

没有办法知道连接是否会保持稳定,因为它需要了解未来。您可以像事务服务一样工作,服务器端使用两阶段提交的方法将离线命令作为事务处理。

在这种方法中,您有一个类似的算法:

  • 客户端向服务器发送命令
  • 服务器为命令返回一个特殊的唯一 ID
  • 客户端要求服务器执行唯一 ID
  • 服务器确认命令已执行

如果前 2 个阶段没有完成,你就再做一次。可能发生的最糟糕的事情是服务器上的一些孤立命令。

如果第三个选项没有完成,你就再做一次。服务器知道它是否处理了这个命令,如果它已经被处理了就会确认它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多