亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AlarmManager在錯誤的時間觸發警報

AlarmManager在錯誤的時間觸發警報

達令說 2019-09-03 20:25:03
我管理一切都可以創建一個通知服務,用于通過警報觸發通知。不幸的是,使用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()然后警報觸發器在下周再次執行,依此類推。


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號