我們的應用程序有一個服務,它啓動一個定時器來每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,因爲當手機正在睡眠時,任務不需要運行。
在此先感謝。
您可以使用電源管理器喚醒鎖http://developer.android.com /reference/android/os/PowerManager.WakeLock.html – CoronaPintu