唤醒cpu的唤醒锁的类型

时间:2017-09-20 07:40:35

标签: android 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>

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

PowerManager.ACQUIRE_CAUSES_WAKEUP不是有效的唤醒锁定级别。 根据{{​​1}}方法的有效参数是:

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

另见:

https://developer.android.com/reference/android/os/PowerManager.html#newWakeLock

How to get an Android WakeLock to work?