3
我已經使用定時器&的TimerTask與僞代碼: -安排保證在接近預定時間在Android上運行的任務的最佳方式是什麼?
samplingTask = new TimerTask() {
public void run() {
collectSample();
}
};
timer.schedule(samplingTask, 60*1000, 60*1000); //1 min
本申請是長期運行的應用程序(例如說沒有激活鎖定15分鐘,並且在屏幕關閉)。在完成此任務後,我鎖定屏幕並且手機處於運動狀態(傳感器管理器已激活加速計)。所以,理想情況下這個任務應該每分鐘運行一次。但是,在日誌中,我看到計劃的計時器僅在第5分鐘,第9分鐘和第12分鐘運行。
FINER: (13,Timer-0,Workout)In Timertask, nth minute=5
FINER: (13,Timer-0,Workout)In Timertask, nth minute=9
FINER: (13,Timer-0,Workout)In Timertask, nth minute=12
我要求具有的幾秒鐘(1-5秒),在可接受的延遲範圍。它看來,如果該設備處於睡眠模式,定時器不喚醒它和運行時間關鍵的採樣計劃任務。有沒有其他的選擇呢。文檔說可以使用AlarmManager和Handler。我認爲AlarmManager應該理想地用於基於某個系統警報來執行單個任務。有什麼我失蹤或一些替代品來實現此功能。