0

我开发了一个应用程序,通过移动应用程序使用 j2me 为诺基亚手机访问网络,但是当我试图在黑莓设备上运行这个应用程序时,我遇到了问题,不想打开任何网站,它只是冻结所以任何人都可以帮助我请因为我在应用程序中使用的这些代码行找不到任何解决方案

这条线我用来从网上阅读一些东西

hc = (HttpConnection) Connector.open(url); dis = hc.openDataInputStream(); 
int dataleft = dis.available(); 
for (int j = 0; j < dataleft; j++) {
     buffer.append((char) dis.read()); 
}
dis.close(); 
hc.close();

和这条线打开一个网站

this.platformRequest("http://stackoverflow.com/questions");
4

1 回答 1

0

您可能正在事件线程上运行该代码(它有一些问题......不要依赖 available() 是准确的,您应该只调用 read() 直到它返回 -1)在事件线程上,这是一个很大的不-在黑莓上没有。该应用程序可能会尝试提示用户允许发出 HTTP 请求,但由于偶数线程被阻止,它无法执行此操作。这里有一个关于 BlackBerry 事件线程上做什么和不做什么的很好的描述:

http://www.thinkingblackberry.com/archives/182

HttpConnection 的 API 文档中也提到了这一点:

该接口执行阻塞输入和输出操作。如果此接口的实现从主事件线程中打开连接,应用程序将锁定。通过从与主事件线程分离的线程中打开连接来防止应用程序锁定。

API 文档位于:

http://www.blackberry.com/developers/docs/4.5.0api/javax/microedition/io/HttpConnection.html

于 2011-02-07T13:26:25.973 回答