サービスでLocationListenerを実行している場合、ウェイクロックを設定しない限り、サービスは停止します。これはGPS自体とは何の関係もありません。
/**
* Acquire a wake lock.
* Ensure the CPU remains on and the screen is at least dim.
*/
private void aquireWakeLock() {
final PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
this.wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG);
this.wakeLock.acquire();
if(DEBUG)
Log.d(TAG, "Wake lock aquired:" + this.wakeLock);
}
/**
* Release the wake lock.
*/
private void releaseWakeLock() {
if(this.wakeLock == null)
return;
this.wakeLock.release();
this.wakeLock = null;
if(DEBUG)
Log.d(TAG, "Wake lock release");
}
方法はのonCreate()RESPで呼ばれています。私は私のサービスに次のコードを使用するウェイクロックを取得し、解除する
。 onDestroy()。
GPSはどのように開始されましたか(サービスで)どのデバイスを使用していますか?私が知っていることから、それは下層に不具合がない限り、止めるべきではありません。 – Reno
私はHTC Desireを使用していますが、バッテリー節約モードが原因で停止していると思います。 – user522559