2012-01-11 52 views
2

我在我的服務中使用警報管理器每隔15秒設置一次非喚醒警報來執行某個任務。我不想將電話喚醒,因爲任務不是時間緊迫的,所以我使用ELAPSED_REALTIME標誌來設置鬧鐘。這裏是代碼:有關Alarm Manager行爲和喚醒鎖的問題

alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 15 * 1000, intentRecurringChecks); 

我在我的日誌中注意到的是該任務每15秒執行一次。這是否意味着即使屏幕已關閉半小時,手機仍保持清醒狀態?有沒有一種方法可以確保我的應用程序不是喚醒電話的應用程序?

我在搜索這個主題,但找不到合適的答案。

感謝您的幫助。

回答

0

首先,您不應該使用AlarmManager來處理這種超時。這在documentation中明確提到(請參閱粗體部分)。在你的情況下最好使用基於Handler的定時器。這裏是一個例子:Repeat a task with a time delay?

其次,當設備通過USB連接時,不會進入深度睡眠模式。你應該斷開你的設備等一兩分鐘。重新附加並分析日誌。

+0

我正在使用這種短暫的超時只是爲了測試目的。不過,這種行爲的原因是什麼。此外,我在Android上登錄文件,而不是通過USB。 – black 2012-01-11 17:32:48

+1

@Sebouh:「我只是爲了測試目的而使用這麼短的超時時間」 - 請不要。使用五分鐘之類的東西,然後*看看會發生什麼。 – CommonsWare 2012-01-11 17:48:05

+0

我檢查了5分鐘的延遲,它有時會在5分鐘內執行,其他時間則是5分鐘+/- 10秒。你認爲這是可以接受的嗎? – black 2012-01-11 18:55:40