【问题标题】:J2ME:HttpConnection not closing immediatelyJ2ME:HttpConnection 没有立即关闭
【发布时间】:2012-08-31 13:02:55
【问题描述】:

我开发了一个使用 HttpConnection 的 midlet。有一个单独的线程进行连接。

现在我所做的是在该线程上提供另一个名为 cancel() 的方法,即使在 run() 方法中使用 HttpConnection 时,它也会调用 HttpConnection.close()。

这样我有点中断/取消连接。这在我的 sun 无线仿真器上运行良好,但在 Nokia 设备和 Nokia SDK2 上不起作用。

是否有可能一个线程正在使用 HttpConnection 而另一个线程正在对其调用 close() ?我期待抛出异常,但 midlet 挂起。

【问题讨论】:

  • 您需要将 MIDlet 剥离到重现错误所需的最少代码量。这可能会帮助你修复它。如果仍然存在,请在此处发布代码,有人可以提供帮助。
  • 我使用 Ajax-like Asynchronous SOA Calls with Java ME. 和请求后对 Http 请求使用异步调用。请求等待响应码。那个时候我尝试关闭来自 MIDlet 的连接并没有立即关闭。
  • 请上传您的代码。

标签: java-me nokia midp httpconnection


【解决方案1】:

在进行 IO 时,您需要注意大多数方法都可能是阻塞的,除非文档中另有说明。 HTTPConnection.close() 就是这样一种方法。

我的猜测(因为您没有共享任何代码)是您从主 GUI 线程调用 close() 并因此在方法阻塞时挂起 MIDlet。最好的方法可能是在执行连接的线程中设置一个“中止”布尔值并在战略位置检查它。作为替代方案,您可以生成一个“关闭线程”来执行可能阻塞的关闭调用。

【讨论】:

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