1

時々位置を報告する Android バックグラウンド サービスがあります。Wi-Fi 経由でローカルにテストすると、かなりうまく動作しますが、たとえば 3G 接続で (場合によっては Edge で) テストすると、アプリケーションが明らかにボトルネックに入り、onLocationChangedメソッドを実行しないことがわかりました。たぶん信号が失われたかなどなので、それは大丈夫です。ただし、しばらくすると(おそらく接続が再確立されたとき)、すべてのリクエストが一度に更新され始め、数秒のうちにonLocationChangedメソッドが何度も実行されます。

誰かがそれを解決する方法を知っていますか? メソッドlocationManager.requestLocationUpdatesにタイムアウトを追加することは可能ですか?

マイリスナー

public class MyListener implements LocationListener {
  @Override
  public void onLocationChanged(Location loc) {
        //report location to server
        HttlCallToUpdatePostion(loc.Latitude, loc.Longitude, loc.Accuracy);
  }
}

私のサービス

Handler handler = null;
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
MyListener listener = new MyListener();

protected void doWork() {
  Looper.prepare();
  handler = new Handler();
  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, listener);
  Looper.loop();
}
4

2 に答える 2