Android中的AlarmManager.setRepeating()未设置警报

时间:2012-09-28 06:25:39

标签: java android alarmmanager

我在使用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 / ACTUALLY SCHEDULED在星期五(32494):Fri Oct 05 01:43:00 EDT 2012

这是我安排的正确时间。但是,我的警报不会触发。关于可能导致这种情况的唯一线索是,当我使用调试器进入方法时,调用的方法之一是Parcel.readException()。我不知道这意味着什么,或者它是否真的很重要。有没有人知道可能会发生什么?

2 个答案:

答案 0 :(得分:0)

参考this链接。汤姆和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);

答案 1 :(得分:0)

我找到了答案。此方法被多次调用,并使用PendingIntent中storable.getId()的相同值。它覆盖了旧的PendingIntent,并安排了另一个我不等待的东西。感谢那些帮助过你的人。