2

私の BlackBerry アプリでは、Locator.geocode(...)リクエストは 内にありThreadますが、OS 5 デバイスの UI をブロックします。OS 6 および 7 デバイスでは問題なく動作します。UI はブロックされません。

呼び出された瞬間からLocator.geocode(...)終了するまで UI がブロックされ、ユーザーはアプリケーションを操作できません。

これはOS 5の問題だと思います。これに対する解決策はありますか?


更新:まず第一に、迅速な返信に感謝します。

  1. Locator.geocode(...)の呼び出しを置き換えましたThread.sleep(...)。UI は遅くなりますが、ブロックされません。私が使っているシミュレーターは9300です。

  2. Locator.geocode(...)リクエストはブロック内にあり、例外try..catch()をスローしません。呼び出しが終了すると戻りますがnull(私はシミュレーターを使用しています)、例外はスローされません。

参考までに、これはコンソールが出力するものです: (9300 シミュレーターを使用)

** * * Geocode クラスを作成する前のスレッド数: 4

** * * Locator.geocode を呼び出す直前の Geocode クラス内のスレッド数: 5

** * *イベント スレッドで実行中: false

Locator.geocode(...) // UI はこの時点 (OS 5) でこのリクエストが完了するまでブロックされます

4

2 に答える 2

2

スレッド上で適切に実行していますか? OS 6+ の応答が速くなっただけで、OS 5 でしか問題に気付かない可能性があります。 へLocator.geocode()の呼び出しをへの呼び出しに置き換えてThread.sleep(60000)、バックグラウンド スレッドが適切に機能していることを確認してください。

于 2013-05-23T19:22:19.207 に答える
1

Locatorドキュメントから:

*ジオコード情報のリクエストは同期的ですが、cancel() を呼び出すことで中断できます。アプリケーションは Locator クラスを使用して、一度に 1 つの要求しか作成できません。複数のリクエストを行うと、MapServiceException が発生します。*

そのため、コードをチェックインする必要があります。複数のリクエストを行わないようにしてください。別の考えられる問題:

LBS Map API が BlackBerry デバイスにインストールされていない場合、ジオコード情報を要求すると MapServiceException がスローされます。

どちらの場合も、スレッドで例外がスローされるとそのスレッドは終了しますが、イベント スレッドなどの他のスレッドには影響しません。したがって、コードを読まなくても、問題はロケーターに関係していないと言えます。コードや例外トレースを貼り付けていただけると大変助かります。

于 2013-05-24T08:51:39.397 に答える