0

我想要一个计时器,但我发现当设备进入睡眠状态时它不起作用。我用过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()

我在Activity中调用了获取函数,onCreate所有工作完成后释放。调试时我可以看到锁已经被持有,但是当没有插入时,它在 1.5 分钟后不会做任何工作。

我怎样才能让它工作,或者是否有任何解决方案可以很好地代替这个愚蠢的唤醒锁?------更新----- 我已经获得了我需要的所有权限,正如我所提到的,在调用获取函数后,WakeLock 已经被持有,并且可以在 Watch 中看到。

4

1 回答 1

0

您可能忘记了 Manifest 中的许可吗?

<uses-permission android:name="android.permission.WAKE_LOCK" />
于 2013-07-11T07:25:32.740 回答