我创建了警报演示。在那个演示中,我重复了一个警报。我的演示中有一个问题。即使时间过去了,我的闹钟还是叫服务。我设置了 16:08:00 时间并调用了那个闹钟,所以它在那个时间之后调用了我的闹钟服务。请帮助我停止这个条件。
AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(ctx.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 8);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = createPendingIntent(ctx);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi);
CreatePendingIntent 方法
private static PendingIntent createPendingIntent(Context context)
{
Intent myIntent = new Intent(context, MyAlarmService.class);
return PendingIntent.getService(context,0, myIntent, 0);
}
最佳答案
将闹钟设置为过去时间时,闹钟会立即弹出。 只需检查当前时间是否大于闹钟时间。如果是,请将闹钟时间增加 24 小时并设置闹钟。:
long timeToAlarm = calendar.getTimeInMillis();
if (calendar.getTimeInMillis() < System.currentTimeMillis())
{
timeToAlarm += (24*60*60*1000);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeToAlarm, 24*60*60*1000, pi);
关于android - 即使时间过去了,也会重复调用警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401063/