我开发了一个使用HttpConnection的midlet。有一个单独的线程来进行连接。
现在我所做的是在该Thread上提供另一个名为cancel()的方法,即使在run()方法中使用HttpConnection时也会调用HttpConnection.close()。
这样我就可以中断/取消连接。这在我的太阳无线模拟器上工作正常,但它不适用于诺基亚设备和诺基亚SDK2。
是否有可能一个线程正在使用HttpConnection而另一个线程正在调用close()?我期待抛出一个异常,而不是midlet挂起。
答案 0 :(得分:0)
在执行IO时,您需要注意大多数方法都可以阻止,除非文档中另有说明。 HTTPConnection.close()就是这样一种方法。
我的猜测(因为你没有共享任何代码)是你从主GUI线程调用close(),因此在方法阻塞时挂起MIDlet。最好的方法可能是在执行连接的线程中设置一个“中止”布尔值,并在战略位置进行检查。作为替代方案,您可以生成一个“关闭线程”来执行可能阻塞的关闭调用。