我想在选择日期,时间和分钟时开始闹铃。
到目前为止,这是我的代码:
public void startAt() {
Intent alarmIntent = new Intent(backgroundApplication.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(backgroundApplication.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.DAY_OF_WEEK,calendar.WEDNESDAY);
calendar.set(Calendar.HOUR_OF_DAY,7);
calendar.set(Calendar.MINUTE,35);
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 5, pendingIntent);
}
对于我设置DAY_OF_WEEK的例子是今天(星期五),它的效果很好。但是当我把它改成星期三,或者在星期五之前的其他日子,它仍在运行。
在选定的日子里还有其他方式可以开始吗?
答案 0 :(得分:0)
根据文档http://developer.android.com/reference/android/app/AlarmManager.html#setRepeating%28int,%20long,%20long,%20android.app.PendingIntent%29,第二个参数是触发时间(以毫秒为单位),如果将其设置为过去的时间,则会立即触发警报。如果您希望警报仅从下周三开始,那么您必须使用calendar.add(Calendar.WEEK_OF_MONTH, 1)
将日历时间提前到下周三。顺便说一下,在您的代码中,您不需要calendar.setTimeInMillis(System.currentTimeMillis())
。Calendar.getInstance()
默认会返回当前时间。您还应该使用静态字段Calendar.WEDNESDAY
。