首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >唤醒cpu的唤醒锁类型

唤醒cpu的唤醒锁类型
EN

Stack Overflow用户
提问于 2017-09-20 15:40:35
回答 2查看 795关注 0票数 0

我有一个警报管理器,我正在后台和警报管理器一起处理一些任务。我使用wakelock唤醒CPU来完成我的后台工作,这会导致下面的错误。我搜索了一下,发现必须指定一种唤醒锁类型,并且我不应该使用ACQUIRE_CAUSES_WAKEUP。我应该用什么来代替呢?

我的代码:

代码语言:javascript
复制
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;
}

我的错误:

代码语言:javascript
复制
Caused by: java.lang.IllegalArgumentException at android.os.PowerManager$WakeLock.<init>
EN

回答 2

Stack Overflow用户

发布于 2017-09-20 16:13:10

Stack Overflow用户

发布于 2017-09-20 16:13:38

PowerManager.ACQUIRE_CAUSES_WAKEUP不是有效的唤醒锁定级别。根据validateWakeLockParameters()方法,有效参数为:

代码语言:javascript
复制
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,例如:

代码语言:javascript
复制
newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "aqs_wake_lock");

另请参阅:

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

How to get an Android WakeLock to work?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46316045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档