我管理一切都可以創建一個通知服務,用于通過警報觸發通知。不幸的是,使用AlarmManager設置鬧鐘無法正常工作。它在幾分鐘后發射(不完全是幾小時,這表明存在時區問題)。重復周期是1周,所以我使用常量INTERVAL_DAY并將其乘以7.為了確保一個PendingIntent不替換另一個,我將dayOfWeek作為第二個參數傳遞給PendingIntent.getService()。我通過記錄來檢查警報發射時間的正確性:Log.d(TAG, "next alarm " + df.format(cal.getTime()));是否真的沒有辦法列出所有報警集 - 至少是我自己的應用程序?我相信這是追蹤錯誤的唯一方法。我的代碼:cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.DATE, 1);cal.set(Calendar.HOUR_OF_DAY, hour);cal.set(Calendar.MINUTE, minute);Log.d(TAG, "next alarm " + df.format(cal.getTime()));Intent showNotificationIntent = new Intent(context, NotificationService.class);dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);alarmIntent = PendingIntent.getService(context, dayOfWeek, showNotificationIntent, 0);getAlarmManager(context).setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), INTERVAL_WEEK, alarmIntent);我想提供每天報警,但在不同的時間,可以由用戶設置。所以我最多使用7個警報,每周應該發射一次。即使在閱讀了類似問題的大量答案之后(我不打算創建一個重復的問題),我也沒有設法找到問題。
3 回答
aluckdog
TA貢獻1847條經驗 獲得超7個贊
對于低于19的api級別,您應該使用,AlarmManager.setRepeating()并且您的警報將在指定時間準確觸發。在api級別19及以上,這將不再有效。android中有變化,所有重復警報都是不準確的。因此,如果您想要實現精確的重復警報,您應該安排警報,AlarmManager.setExact()然后警報觸發器在下周再次執行,依此類推。
- 3 回答
- 0 關注
- 657 瀏覽
添加回答
舉報
0/150
提交
取消
