AlarmManager未设置,每次打开活动时发出警报

时间:2011-08-29 14:24:51

标签: android alarmmanager

我正在尝试使用它来设置每天发出的警报。

String alarm = Context.ALARM_SERVICE;
                Calendar calendar = Calendar.getInstance();
                AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm);

                    Intent intent = new Intent("NEW_ITEM");
                    PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
                     calendar.setTimeInMillis(System.currentTimeMillis());
                     am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1*AlarmManager.INTERVAL_DAY, sender);

2 个答案:

答案 0 :(得分:1)

没有运行它,代码对我来说很好......显然,如果你每次启动活动时设置此警报,警报将立即关闭:am.setRepeating(AlarmManager.RTC_WAKEUP, **calendar.getTimeInMillis()**, 1*AlarmManager.INTERVAL_DAY, sender);告诉警报管理器警告正确现在(第二个参数)并在一天内重复(第三个参数,假设你的常数是正确的)。

如果您希望警报仅在24小时内启动,只需将该行更改为:

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + AlarmManager.INTERVAL_DAY, AlarmManager.INTERVAL_DAY, sender);

答案 1 :(得分:0)

代码看起来不错,但你必须要注意一件事。如果用户决定再次设置警报(例如,通过点击“设置警报”按钮),则将替换旧警报。如果您想避免这种情况,请查看以下主题:Using Alarmmanager to start a service at specific time