【问题标题】:When a web service call was invoked in BlackBerry, application hangs在 BlackBerry 中调用 Web 服务调用时,应用程序挂起
【发布时间】:2012-08-29 04:11:48
【问题描述】:

我正在创建我的第一个尝试连接到 REST Web 服务的黑莓应用程序。我尝试了在互联网上找到的示例。请参考此链接:http://mobile-development.org/index.php/blackberry/how-to-call-restful-web-services-in-blackberry

我尝试在我的简单 BlackBerry 应用程序中实现它,当您在 BlackBerry Plug-in for Eclipse IDE 中创建新的 BlackBerry 项目时,它会自动创建。我只是将代码(字面意思是复制并粘贴)放在我的按钮中,单击该按钮时将执行此类代码。但是,当我单击按钮时,应用程序挂起。

当我实现一个在输出日志中简单地输出“Hello”的代码时,应用程序工作得非常好。背后的原因是什么?我需要在单独的线程中运行 Web 服务调用吗?请帮忙。提前谢谢你。

--------请阅读以下内容----------

我注意到我的应用程序挂起,因为它等待来自 Web 服务调用的响应至少 2 分钟。我通读了这个:http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800451/800563/What_Is_-_Different_ways_to_make_an_HTTP_or_socket_connection.html?nodeid=826935&vernum=0——并在 URL 的末尾添加了“deviceside=true”(http://yourwebserviceurl.com;deviceside=true“)。它现在工作正常。也许正确的实现是在后台或单独的线程中执行任务并设置我还不知道的超时。我仍然对是否将设备端设置为真/假感到困惑。我应该在什么时候将设备端设置为真我正在模拟器中运行我的应用程序,然后如果我希望它在实际设备中运行,只需将其更改为 false?这是我现在发现的,或者你也可以帮助我解决这个问题。;-)

【问题讨论】:

    标签: java web-services rest blackberry


    【解决方案1】:

    他们提供的代码用于 HTTP 连接,完全没问题,但是我们需要在线程中调用此代码,因为 ui 也可以在它卡住的线程中工作。 所以你需要在这里使用线程概念。 查看提供的示例

    Eclipse helios\plugins\<sdk version>\components\samples\com\rim\samples\device\httpdemo
    

    每当您想在后台线程中更新 UI 时,请使用

    UiApplication.getUiApplication().invokeLater(new Runnable() 
        {
            public void run()
            {
                <Update UI>
            }
        });
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复。我尝试了 HttpDemo 示例并提供了我给出的示例中的 url。我在模拟器中运行它,但它无法检索任何内容,因为它达到了超时。错误消息说:“java.io.InterruptedIOException:本地连接在 ~ 120000 之后超时”。有没有办法可以在我的项目中测试有关 Web 服务调用的任何示例?我对黑莓开发非常陌生。我只想要一个非常简单的应用程序,以便在处理非常复杂的场景之前了解它的实际工作原理。
    • 无论你想在单独的线程中执行什么,它都不会卡住 UI。
    • 我可以将示例代码 (mobile-development.org/index.php/blackberry/…) 放在 run() 方法中吗?还是我做错了?因为我已经实现了,所以应用程序仍然挂起。关于 HttpDemo,它不会从我提供的 url 中检索任何内容,因为它达到了超时。真是个新手。
    • 糟糕!我在这里做了一些愚蠢的事情。我忘了编辑我的代码,因为我事先对其进行了编辑并将代码放在同步 (this) {} 中。我再次使用原始示例代码并将其放在 run() 方法中,它现在不再挂起。我现在可以检索响应!非常非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多