¿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).
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.