2013-07-11 20 views
0

我想要一個計時器,我發現它在設備進入睡眠狀態時不起作用。我曾使用AlarmManager但它不起作用。我也嘗試過仍然沒有幫助的服務。然後我試着WakeLockpartial_wake_lock。它在一開始就運行良好,但在沒有更改任何與PowerManager或WakeLock相關的代碼的情況下突然失敗。現在它將工作大約1.5分鐘。爲什麼我的wake_lock不工作?

的代碼是:

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分鐘後不會做任何工作。

我該如何使它工作,或者是否有任何解決方案可以很好地工作,而不是這個愚蠢的喚醒鎖? ------更新----- 我已經獲得了我需要的所有權限,並且正如我剛纔提到的那樣,喚醒鎖已經在調用獲取功能後被保留,並且可以在Watch中看到。

回答

0

是否可以在Manifest forogott權限?

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

我得到了我需要的所有權限,這就是爲什麼我很困惑 –