2011-02-26 147 views
0

我正在嘗試編寫一個簡單的應用程序,用於在給定時間內將手機靜音。這是我的第一個Android應用程序,但經過幾個小時的閱讀,我認爲它已接近完成。但它仍然存在一個我無法修復的問題。Handler.postDelayed當手機處於待機模式時不會調用

我正在使用活動來顯示GUI。它有按鈕來設置開始和結束時間,以及其他一切需要的東西。當用戶輸入所有參數時,它們被傳遞給服務。該服務使用一個處理程序對象來註冊2個回調函數(Handler.postDelayed)。一個用於開始靜音,另一個用於結束靜音(在SetMuteIntervall中)。 第一次測試似乎有效,但如果我嘗試將其靜音30分鐘,它就不會取消靜音。我認爲這與手機處於或處於待機模式的事實有關。我也嘗試使用Handler.postAt(),但也沒有工作(和時間相對正常運行時間有點混淆)。

因此,無論手機是否處於待機狀態,我應該怎樣做才能保證我的回叫被呼叫?

這裏是我的程序的源:

http://pastebin.com/XAgCeAq9

http://pastebin.com/33nepFV5

回答

1

嘗試使用AlarmManager規劃在未來的一些動作。 AlarmManager不是待機模式相關的,即使設備處於睡眠狀態也會觸發。

您的線程實際上已停止,手機處於待機模式。如果你仍然想使用線程,你可以使用WakeLock來阻止CPU進入待機模式(但仍然關閉屏幕),但這不是最好的方式。

相關問題