繁体   English   中英

Android中的AlarmManager.setRepeating()未设置闹钟

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM