【问题标题】:BlackBerry Problem with Browsing黑莓浏览问题
【发布时间】:2011-02-07 12:50:18
【问题描述】:

我开发了一个应用程序,通过移动应用程序使用 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");

【问题讨论】:

    标签: java blackberry java-me nokia httpconnection


    【解决方案1】:

    您可能正在事件线程上运行该代码(其中有一些问题...不要依赖于 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

    【讨论】:

    • 所以我想如果我解决线程问题就可以解决问题
    • 我尝试了所有线程解决方案,但似乎没有希望,请问您能告诉我如何解决线程问题吗??
    • 不看代码真的很难说。但是您绝对应该确保在单独的线程上调用 Connector.open()。您还应该确保捕获异常等,以确保代码按预期工作。
    • 它在诺基亚手机上工作得很好,但我不知道黑莓有什么问题
    • 所有代码都在一个线程上吗?如果是这样,那肯定是黑莓的问题。
    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多