我的wake_lock为什么不起作用?

时间:2013-07-11 07:23:08

标签: android wakelock

我想要一个计时器,我发现它在设备进入睡眠状态时无效。我曾使用AlarmManager但它不起作用。我也尝试了服务,但仍然无济于事。然后我尝试使用WakeLock partial_wake_lock。它在一开始就运行良好,但在没有更改与PowerManager或WakeLock相关的任何代码的情况下突然失败。现在它将工作约1.5分钟。

代码是:

    private void acquireWakeLock(){
        PowerManager pm=(PowerManager)getSystemService(Context.POWER_SERVICE);
        wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getCanonicalName());
        wl.acquire();
    }
    private void releaseWakeLock(){
        if(wl!=null&&wl.isHeld()){
            wl.release();
            wl=null;
        }
    }

正如你所看到的,没什么特别的。基本上我这样做了:

//private members,including a wakelock,a handler and a runnable, etc
onCreate{
acquireWakeLock();
init();
handler.postdelayed(runnable,time);
}
//some functions...
a function  //called in runnable, which does all work before finish() and it calls releaseWakeLock()

我在活动onCreate中调用了获取功能,并在完成所有工作后将其释放。在调试时,我可以看到锁已经被锁定,但是当没有插入时,它将在1.5分钟后无法完成任何工作。

我怎样才能使它工作,或者是否有任何解决方案可以正常工作而不是这个愚蠢的唤醒锁定? ------ -----更新 我已经拥有了我需要的所有权限,并且正如我所提到的,在调用获取函数之后已经保持了WakeLock,它可以在Watch中看到。

1 个答案:

答案 0 :(得分:0)

你可能忘记了Manifest的许可吗?

<uses-permission android:name="android.permission.WAKE_LOCK" />