1

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

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

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

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

4

1 回答 1

0

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

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

于 2012-09-17T07:47:02.553 回答