2012-01-12 30 views
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應該理想地用於基於某個系統警報來執行單個任務。有什麼我失蹤或一些替代品來實現此功能。

回答

0

您可以使用AlarmManager - 它有機會向上軟弱和設備重複運行一些任務。

我不知道到底,但假設,當用戶關閉屏幕上的所有任務暫停,不能做任何代碼,而設備的睡眠。

相關問題