2014-08-29 43 views
6

發生什麼事情,我應該添加鬧鈴但將開始日期設置爲過去的日期?安卓設置鬧鈴到過去的日期

是立即得到執行,還是放入隊列中,從不執行?

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent); 
+3

試試你的自我,並測試它非常簡單:) – MilapTank 2014-08-29 10:14:25

+0

使用使用'setInexactRepeating'而不是'setRepeating' .. – 2014-08-29 10:15:51

回答

5

如果日期過去,則會立即觸發警報。然而,你可能會嘗試使用setInexactRepeating而不是setRepeating

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent); 

setInexactRepeating() docs

計劃有不準確的觸發時間要求重複報警;例如, 例如,每小時重複一次警報,但不一定在每小時的頂部有 。

0

我認爲警報僅在設定時間(至少通過Android用戶界面),而不是某一天,這樣一來就會開始在你設置的確切hour:minute

7

documentation開始,如果startDate時間過去,將立即觸發警報。

0

正如我從我以前的經驗AlarmManager可以得出結論。過去的日期將立即觸發警報。

1

其實AlarmManager與當前時間一起工作。 所以,當你將設置過去的日期報警,那麼,AlarmManager將執行

public void onReceive(Context context, Intent intent) 
{ 
} 

方法。

0

據我所知,AlarmManager.set將現在執行時間設置爲過去的時間,文檔說,儘可能多。 AlarmManager.setInexactRepeating這個句子缺失,當它設置爲過去的時間時,這個警報不會觸發,它會在下一個時間間隔,從給定的時間開始觸發。

0

AlarmManager.set和AlarmManager.setInexactRepeating都調用setImpl,並將它們的triggertime作爲參數傳遞(在Android 7.1.2源中檢查)。 - >如果triggertime在過去,兩種方法都沒有區別。