BroadcastReceiver con un oyente agota la batería cuando no está en uso

Tengo un receptor que espera aTelephonyManager.ACTION_PHONE_STATE_CHANGED:

public void onReceive(Context context, Intent intent) {
String theAction = intent.getAction();  
if (theAction != null && theAction.equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
        CONTEXT = context;
        startListening();   
}

Cuando lo obtiene, registro el oyente (para el sensor de orientación):

public void startListening() {  
    sensorManager = (SensorManager) CONTEXT.getSystemService(Context.SENSOR_SERVICE);
    List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
    if (sensors.size() > 0) {
        sensor = sensors.get(0);
        running = sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
    }
}   

Y luego, en el @ del oyenonSensorChanged() método:

public void onSensorChanged(SensorEvent event) {
    if(running) {   
        sensorManager.unregisterListener(this);
        // do some not significant stuff here
    }

Y ahora el problema: recibo una llamada telefónica, el receptor comienza, luego el oyente comienza y todo funciona según lo diseñado. Pero, más adelante, cuando miro las estadísticas de la batería, mi aplicación aparece como la que tiene un 2-3% de consumo. @ este porcentaje está aumentandoaunqu no hay llamadas, de ahí el receptorno e trabajando

¿De dónde viene esta descarga de batería? La actividad que inicia el receptor no funciona (y de todos modos es una casilla de verificación única). Supongo que el oyente no puede ser anulado porsensorManager.unregisterListener(this);, pero debería funcionar: anulo el registro del oyente cuando recibió el primer evento, tiene sentido.

¿Cómo podría resolver el problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta