Если вы используете 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 () соотв. OnDestroy ().