2012-01-07 24 views
6

在我的應用程序上,我設置報警AlarmManager對象和手機

AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
... 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
... 
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent); 

除非我關閉和打開手機上正常工作。

具體而言,假設在10點20分,我將鬧鐘設置爲10點22分,並且我在10點21分關閉並打開手機,鬧鐘不起作用。

可能是什麼問題?那是一個pendingIntent的廣播問題嗎?還是我應該設置一些alarmManager對象的標誌讓它在這種情況下工作?

+1

你可以檢查這個http://stackoverflow.com/questions/5072451/clarification-of-alarmmanager-behavior-in-android。看起來類似 – nandeesh 2012-01-07 23:35:14

回答

17

有關AlarmManager文檔說:

已註冊的警報被保留,而設備是睡着了(並且可以選擇喚醒設備,如果他們在這段時間內熄滅),但會如果被清除它被關閉並重新啓動

看起來Android默認包含的AlarmClock在重新啓動後仍然有效。

在重新啓動後保持警報正常工作的方法是在啓動時啓動應用程序並使用AlarmManager重新設置所有的鬧鐘。 (實際上,您可能只想使用廣播設置您的鬧鐘,而不是啓動您的應用程序)

Here是一個關於在啓動時執行應用程序的StackOverflow問題。

您還可以看看默認的AlarmClock如何通過從源文件讀取來實現。 你可以閱讀並下載here

+0

它包括關閉屏幕? – 2014-02-03 07:43:44

+0

'關閉屏幕'意味着設備睡着了。警報將會保留,關閉屏幕並且不要完全關閉手機。 – 2014-02-03 11:58:06

+1

我明白了,如果鬧鐘設置爲重複,並且設備長時間睡眠,會發生什麼情況?這是否意味着它會同時獲得多個意圖(同一個鬧鐘)? – 2014-02-03 12:28:16