2012-08-31 101 views
1

我开发了一个使用HttpConnection的midlet。有一个独立的线程来完成连接。J2ME:HttpConnection不立即关闭

现在我所做的就是提供该线程将调用HttpConnection.close取消()称为另一种方法(),即使HttpConnection的在run()方法被使用。

这样,我有点中断程序/取消连接。这对我的sun无线模拟器工作正常,但它不适用于诺基亚设备和诺基亚SDK2。

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

+1

您需要剥去你的MIDlet下降到必要的代码来重现错误的最小量。这可能会帮助你解决它。如果它仍然存在,请在这里发布代码,有人可以提供帮助。 – funkybro

+0

我使用[与Java ME类似的Ajax-like异步SOA调用](http://developers.sun.com/mobility/midp/ttips/soacalls/)和请求后,使用异步调用Http请求。请求等待ResponceCode。那次我试图关闭从MIDlet连接立即关闭连接。 – Tanaji

+1

请上传您的代码。 – Lucifer

回答

0

在做IO你必须要知道,大多数方法可以阻止,除非在文档中另有说明。 HTTPConnection.close()就是这样一种方法。

我的猜测(因为你尚未分享任何代码)是你调用close()从主界面线程,因此挂的MIDlet当方法块。最好的方法可能是在连接线程中设置一个“中止”布尔值,并在战略位置进行检查。作为另一种选择,你可以产生一个“关闭线程”来完成可能的阻塞关闭呼叫。