【问题标题】:J2ME(LWUIT)- Interrupting the response from serverJ2ME(LWUIT)- 中断来自服务器的响应
【发布时间】:2012-06-20 18:54:49
【问题描述】:

我使用 J2ME(LWUIT) 开发了一个移动应用程序,因为我必须在收到来自服务器的响应并在服务器端完成更新后更新我的移动 RMS 中的值,在这种情况下,当我在点击服务器后并在收到响应之前点击手机中的红色按钮时,移动应用程序将关闭并且服务器端值已更新,但移动 RMS 值尚未更新让我知道是否有人对此有所了解。

【问题讨论】:

    标签: java-me lwuit


    【解决方案1】:

    红色按钮通常会立即终止应用程序,并且不会真正让您有机会修复它。您可能需要回调到服务器以实际在那里提交数据。

    【讨论】:

      【解决方案2】:

      @arun 那么你能做的就是。

      1)在服务器上更新更改。

      2) 将您希望推送到 RMS 的数据连同唯一 ID 一起发送到 MIDlet。唯一 ID 唯一标识每笔交易。

      3)此时,服务器一直等待 MIDlet 确认 MIDlet 是否收到数据(假设等待 20 秒)

      4) 一旦 MIDlet 接收到数据,它就会将其存储在内存中,并立即将确认信息与接收到的 uniqueID 一起发送到服务器(并等待 ..say.25 秒)。 MIDlet 还存储服务器发送具有特定唯一 ID 数据的次数的计数。因此计数最初为 0,并且每次服务器发送具有相同唯一 ID 的数据时递增。

      5)如果服务器在 20 秒内收到确认,它什么也不做。 25 秒后,MIDlet 会将数据写入 RMS。你的工作完成了!

      5.1)如果服务器没有收到确认,它将再次发送具有相同唯一ID的数据(在第21秒)。 MIDlet 识别唯一 id 并递增计数器,该计数器跟踪服务器发送相同数据的次数。它再次发送确认并等待 25 秒。

      现在……这个过程可以继续下去。

      您需要做的是……决定何时决定在此过程中退出。

      6)最终,如果服务器没有收到确认,它会回滚更改并向MIDlet发送消息“roll back data for unique id so so”

      7) 如果 midlet 没有提交该唯一 id 的数据,它会忽略消息以及与该唯一 id 关联的更改。如果已经提交,它只会回滚该唯一 ID 的数据。如果对相同的唯一 ID 重复回滚请求,则忽略并向服务器发送一条消息,表明更改已回滚。

      8)注意:您需要向服务器发送一条消息,说明对 RMS 的更改已回滚,否则服务器将继续发送消息以回滚更改。

      是的,这很复杂。看看这本书。作者 Behrouz Forouzan 的通信网络或类似的东西。他解释了这个工厂。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        相关资源
        最近更新 更多