我有一個帶有RTC鬧鐘的應用程序。目前,我在每天早上8點設置鬧鐘。我的問題是,當警報開始時(下午4點)說,它會考慮過去的開始時間(上午8點),因此會運行。如何防止鬧鐘在啓動時運行時間過長
我希望鬧鐘只能在上午8:00左右運行,但如果在一天晚些時候啓動,則不會運行。任何想法如何?
我有一個帶有RTC鬧鐘的應用程序。目前,我在每天早上8點設置鬧鐘。我的問題是,當警報開始時(下午4點)說,它會考慮過去的開始時間(上午8點),因此會運行。如何防止鬧鐘在啓動時運行時間過長
我希望鬧鐘只能在上午8:00左右運行,但如果在一天晚些時候啓動,則不會運行。任何想法如何?
我建議你使用calendar.add(Calendar.DAY_OF_YEAR, 1);
研究下面的代碼:
Calendar calendar = Calendar.getInstance();
// 9 AM
calendar.add(Calendar.DAY_OF_YEAR, 1); ///to avoid firing the alarm immediately
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = PendingIntent.getService(context, 0,
new Intent(context, MyClass.class),PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pi);
您正在使用setInexactRepeating
或setRepeating
,對吧?所以要處理這種情況,只需比較兩次:當前時間(毫秒)和(上午8:00,當天)(以毫秒爲單位)。如果第一次超過第二次,那麼你應該觸發你的鬧鐘(第二天上午8點),否則 - (上午8點,當天)。
聰明的想法,但你肯定的是,如果代碼ü晚上11:00寫道運行,它上午9:00還會被稱爲早上?它只是添加1天給我的印象是它會延遲1天 –
@MahmoudBadri是的,我100%確定,我已經測試過這一行代碼。 – Kedarnath
好吧,我接受這個答案,因爲它更容易,雖然nikis的答案更準確,但在我的情況下,我想要更容易 –