1

残りの Web サービスに接続しようとする最初の blackberry アプリケーションを作成しています。インターネットで見つけた例を試してみました。このリンクを参照してください: http://mobile-development.org/index.php/blackberry/how-to-call-restful-web-services-in-blackberry

BlackBerry Plug-in for Eclipse IDE で新しい BlackBerry プロジェクトを作成すると自動的に作成される単純な 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"). これで問題なく動作します. おそらく、これの適切な実装は、バックグラウンドでタスクを実行することです.別のスレッドを作成し、タイムアウトを設定しますが、これについてはまだ知識がありません.デバイス側をtrue/falseに設定するかどうかについてはまだ混乱しています.アプリをシミュレーターを実際のデバイスで実行したい場合は、それを false に変更するだけです? それは私が今のところ発見するか、これについても私を助けることができます. ;-)

4

1 に答える 1

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>
        }
    });

お役に立てば幸いです。

于 2012-08-29T05:23:30.167 に答える