2014-01-06 108 views
3

我們的應用程序有一個服務,它啓動一個定時器來每4小時計劃一次任務。
但是電話通常在屏幕關閉時進入睡眠狀態。
我不希望任務在手機處於睡眠狀態時運行。
但我希望它可以立即運行,如果手機睡眠時間超過4小時。android如何在手機進入睡眠狀態時處理android定時器

TimerTask task = new TimerTask() 
{ 

      @Override 
    public void run() { 
          //do something 
     } 
    }; 

new Timer().schedule(task, 0, 4*60*60*1000);//period=4 hours; 

我做了一些測試,顯示是否然後手機已經睡了4個多小時,當它醒來時,定時器的期間沒有增加近5個小時的睡眠,它不能運行任務立即。
它的週期時間只是計算手機的喚醒時間。
我研究了Timer.java,並且知道定時器的延遲機制是使用線程wait(),這就是原因。
如何製作包含手機睡眠時間的循環時間任務?
我認爲不需要使用AlarmManager,因爲當手機正在睡眠時,任務不需要運行。
在此先感謝。

+0

您可以使用電源管理器喚醒鎖http://developer.android.com /reference/android/os/PowerManager.WakeLock.html – CoronaPintu

回答

相關問題