私は現在、毎分(または他の指定された時間)に位置データを受信し、それをサーバーに送信するアプリケーションを作成しています。
私が気付いた問題は次のとおりです。電源に接続されたアプリケーションを使用すると、完全に動作し、定義された間隔で更新が送信されます。バッテリーで使用すると、アップデートがランダムに送信されます。
私のアプリケーションでは、タイマーを使用して更新の間隔を指定します。このタイマーはバックグラウンド サービスで実行されます。タイマーで更新をリクエストし、位置情報を受信したら更新を削除します。私のコードの断片:
private class mainTask extends TimerTask
{
public void run()
{
toastHandler.sendEmptyMessage(0);
}
}
private final Handler toastHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
date = date.getInstance(); //used to set time of update.
if(!GPSupdating)
{
locationManager.requestLocationUpdates("gps", 0, 0, locationListenerGPS);
GPSupdating = true;
}
}
};
私のロケーションリスナー:
LocationListener locationListenerGPS = new LocationListener()
{
public void onLocationChanged(Location updatedLocation)
{
myGPSLocation = updatedLocation;
haveLocationGPS = true;
locationManager.removeUpdates(locationListenerGPS);
GPSupdating = false;
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
これが正しく機能しない理由がわかりましたか?