本当の問題は、実際に有効なポジションをいつ取得するのかわからないことです。この場合、進行状況バーを表示するのは難しいでしょう。あなたは遠くにいます。
「GPS位置の取得」というメッセージを表示し、可能であればGPS衛星が回転するある種のアニメーション、GPS衛星とGPS受信機の間を移動する「信号」、またはだからあなたのGUIのスレッドでアニメーションをレンダリングすると、あなたが同時に意志
:あなたはGPS信号を取得する(しかし、見て、それをより快適にする)していることを示すGPSアイコンを点滅GPS信号を取得する別のスレッドを実行します。あなたは、コールバックメソッド内
while(!positionAcquired)
{
renderAnimation();
}
:あなたのGUIのスレッドで
class GPSPositionGetter extends Runnable
{
private LocationManager _locationManager;
GPSPositionGetter(LocationManager locationManager)
public run()
{
_locationManager.requestLocationUpdates(...);
}
}
Thread t = new Thread(new GPSPositionGetter(locationManager));
t.start();
:
は、あなたがこれを行う新しいスレッドを開始するには:あなたが取得するとGPSを使用して、レンダリングを終了します知らせます:あなたがとしてpositionAcquired
を宣言する必要があり
public onLocationChanged(Location location)
{
if(IsValid(location))
{
positionAcquired = true;
}
}
注意可視性を確保し、スレッドのローカルメモリにキャッシュされないようにするために、を使用します。
P.S.コードはちょうどあなたに何をすべきかの大まかなアイデアを与えることです。 (ExecutorService
のような)もっと洗練されたソリューションがありますが、一般的なアプローチはそれほど違いはありません。