【问题标题】:Setting alarm clock for specific weekday. But alarm is ringing for everyday设置特定工作日的闹钟。但每天都在敲响警钟
【发布时间】:2016-03-03 06:26:02
【问题描述】:

我正在使用此代码广播特定日期的警报。但它每天都在响。谁能帮我解决这个问题?

calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.DAY_OF_WEEK, weekdayList.get(x));
Intent myIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
myIntent.putExtra("reminder_id",value+"");
myIntent.putExtra("reminder_title", title.getText().toString());

pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), value1, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);


//  alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
          calendar.getTimeInMillis(), 1000 * 60  * 60, pendingIntent);

【问题讨论】:

标签: android


【解决方案1】:

如果您只想安排一次:

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

如果你想每周重复一次:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
      calendar.getTimeInMillis(), alarmManager.INTERVAL_DAY * 7, pendingIntent);

请记住在设置日历变量时要小心。根据文档:

对于 set()

如果规定的触发时间是过去的,就会触发警报 立即地。如果已经为此 Intent 安排了警报 (两个意图的相等性定义为 filterEquals(Intent)),那么它将被移除并替换为此 一个。

对于 setRepeating()

如果规定的触发时间是过去的时间,则将立即触发警报,警报计数取决于触发时间相对于重复间隔过去多长时间。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 2011-12-29
相关资源
最近更新 更多