0

私はAndroidでGPS位置情報サービスに取り組んでいます。AndroidサービスにGPSロケーションコードを実装しました。これが私のロケーションコードのスナップショットです。私のアプリケーションでは、これらの位置座標をサーバーに送信するために並行して動作している他のスレッドがあります。

public void onLocationChanged(Location loc) {
            if (loc != null) {
                synchronized (lock) {
                    currentLat = loc.getLatitude();
                    currentLon = loc.getLongitude();

                    if (loc.hasSpeed()) {
                        float speedInMeterSec = loc.getSpeed();
                    }
                }

マップ上のこれらの値を更新したり、計算を実行したり、これらの値を使用してネットワーク経由でデータを送信したりするときに、ダーティリードの問題が発生しないように、ロケーションコードを同期することに興味があります。currentLat変数とcurrentLon変数は、私のサービスでは静的です。

コードの品質を改善し、具体的にはロケーションコードを同期するための提案をお願いします。

前もって感謝します

4

1 に答える 1

0

実際には、OnLocationChanged で受信した場所を同期する必要はありません。しかし、currentLat と currentLong を同期したいようです。これを行う方法は、currentLat と currentLong を public の getter と setter で非公開にし、get/set 関数を同期させることです。そのような:

public void synchronized setCurrentLat(double latitude){
currentLat = latitude;
}

currentLat 自体が private static であることを確認してください。その他ご不明な点がございましたら、お気軽にお尋ねください。

于 2012-09-14T17:16:59.900 に答える