![](/img/trans.png)
[英]Second call to AlarmManager.setRepeating() gets delivered at wrong time
[英]AlarmManager.setRepeating() in Android not setting off alarm
我在使用setRepeating()設置警報時遇到問題。
Intent i = new Intent(context, OnAlarmReceiver.class);
i.putExtra("id", storable.getId());
PendingIntent pi = PendingIntent.getBroadcast(context, storable.getId(), i, PendingIntent.FLAG_UPDATE_CURRENT);
mgr.setRepeating(AlarmManager.RTC_WAKEUP, storable.getObject().getTimeOnDay(Calendar.FRIDAY), Event.MILLISECONDS_IN_A_DAY*7, pi);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(storable.getObject().getTimeOnDay(Calendar.FRIDAY));
Log.v("ACTUALLY SCHEDULED ON FRIDAY", c.getTime().toString());
Logcat狀態:09-28 02:17:58.535:V /實際安排為星期五(32494):周五(美國東部時間)2012年10月5日01:43:00
這是我預定的正確時間。 但是,我的警報不會觸發。 關於可能導致這種情況的唯一線索是,當我使用調試器進入該方法時,被調用的方法之一就是Parcel.readException()。 我不知道這意味着什么,或者甚至是否真正重要。 有人知道發生了什么嗎?
請參考此鏈接。 湯姆(Tom)也提出了要求,CommonsWare為此給出了一個很好的答案。
編輯:
看看這是否有幫助:
Intent myIntent = new Intent(context, OnAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pendingIntent);
我找到了答案。 多次調用此方法,並使用PendingIntent中storable.getId()的相同值。 它正在覆蓋舊的PendingIntent並安排另一個我沒有等待的時間。 感謝你們的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.