es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo utilizar WakeLock con “PowerManager.LOCATION_MODE_NO_CHANGE”?

Estoy intentando usar en el método onCreate de la Actividad:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.LOCATION_MODE_NO_CHANGE, "Mi Etiqueta");
    mWakeLock.acquire();

Pero está haciendo que mi aplicación falle.
Cuando utilizo:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Mi Etiqueta");
    mWakeLock.acquire();

Funciona correctamente (con PPARTIALWAKELOCK).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el primer fragmento de código hace que la aplicación falle podría ser porque PowerManager.LOCATION_MODE_NO_CHANGE no es un argumento válido para el método newWakeLock.

    El método newWakeLock requiere una bandera constante para especificar el tipo de bloqueo de activación que desea crear. PowerManager.PARTIAL_WAKE_LOCK es una bandera válida que crea un bloqueo de activación que permite que la CPU permanezca activa mientras la pantalla está apagada.

    Por otro lado, PowerManager.LOCATION_MODE_NO_CHANGE es una bandera utilizada para establecer el modo de ubicación en la clase LocationManager y no es aplicable a la clase PowerManager.

    Por lo tanto, usar PowerManager.PARTIAL_WAKE_LOCK en lugar de PowerManager.LOCATION_MODE_NO_CHANGE en el método newWakeLock debería resolver el problema y permitir que se adquiera el bloqueo de activación sin hacer que la aplicación falle.

Comments are closed.