我有一个警报管理器,我正在后台和警报管理器一起处理一些任务。我使用wakelock唤醒CPU来完成我的后台工作,这会导致下面的错误。我搜索了一下,发现必须指定一种唤醒锁类型,并且我不应该使用ACQUIRE_CAUSES_WAKEUP。我应该用什么来代替呢?
我的代码:
private static PowerManager.WakeLock wakeLock;
public static void acquirWakeLock(){
if(wakeLock!=null){
wakeLock.release();
}
PowerManager pm=(PowerManager) KITILApplication.getappContext().getSystemService(Context.POWER_SERVICE);
//Error is below line
wakeLock=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.ON_AFTER_RELEASE,"aqs_wake_lock");
wakeLock.acquire();
}
public static void releaseWakeLock(){
if(wakeLock!=null)
wakeLock.release();
wakeLock=null;
}我的错误:
Caused by: java.lang.IllegalArgumentException at android.os.PowerManager$WakeLock.<init>发布于 2017-09-20 16:13:10
发布于 2017-09-20 16:13:38
PowerManager.ACQUIRE_CAUSES_WAKEUP不是有效的唤醒锁定级别。根据validateWakeLockParameters()方法,有效参数为:
PARTIAL_WAKE_LOCK
SCREEN_DIM_WAKE_LOCK
SCREEN_BRIGHT_WAKE_LOCK
FULL_WAKE_LOCK
PROXIMITY_SCREEN_OFF_WAKE_LOCK
DOZE_WAKE_LOCK
DRAW_WAKE_LOCK因此,应该只使用一个唤醒锁而不是ACQUIRE_CAUSES_WAKEUP,例如:
newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "aqs_wake_lock");另请参阅:
https://developer.android.com/reference/android/os/PowerManager.html#newWakeLock
https://stackoverflow.com/questions/46316045
复制相似问题