我正在创建我的第一个尝试连接到其他Web服务的黑莓应用程序。我尝试了我在互联网上找到的例子。请参阅此链接:http://mobile-development.org/index.php/blackberry/how-to-call-restful-web-services-in-blackberry
我尝试在我的简单BlackBerry应用程序中实现它,该应用程序是在BlackBerry IDE的BlackBerry Plug-in中创建新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 - 并在网址的末尾添加了“deviceside = true”(http://yourwebserviceurl.com; deviceside = true“)。现在工作正常。也许适当的实现这是在后台或单独的线程中完成任务并设置我还不知道的超时。我仍然对是否将deviceside设置为true / false感到困惑。我应该将deviceide设置为当我在模拟器中运行我的应用程序时,如果我希望它在实际设备中运行,那么它是真的吗?这是我现在要发现的,或者你也可以帮我解决这个问题。 )
答案 0 :(得分: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>
}
});
我希望它可以帮助你。