我想要一个计时器,我发现它在设备进入睡眠状态时无效。我曾使用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中看到。
答案 0 :(得分:0)
你可能忘记了Manifest的许可吗?
<uses-permission android:name="android.permission.WAKE_LOCK" />