Android 多次接收报警复位触发方法
我有一个多次设置闹钟的接收器。当我启动设备时,我正在使用启动接收器和调用服务来重置先前设置的警报。假设我设置了三个报警,但是onreceive()被多次触发 以下是用于重置报警的维修代码:Android 多次接收报警复位触发方法,android,Android,我有一个多次设置闹钟的接收器。当我启动设备时,我正在使用启动接收器和调用服务来重置先前设置的警报。假设我设置了三个报警,但是onreceive()被多次触发 以下是用于重置报警的维修代码: sender = PendingIntent.getBroadcast(UpdateService.this,nofify_id, intent1, PendingIntent.FLAG_ONE_SHOT); if(Bu
sender = PendingIntent.getBroadcast(UpdateService.this,nofify_id,
intent1, PendingIntent.FLAG_ONE_SHOT);
if(Build.VERSION.SDK_INT >= 23)
{
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < 23) {
am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT )
{
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
}
从文档“如果指定的触发时间是过去的,则会立即触发报警,报警计数取决于触发时间相对于重复间隔过去的距离。”,在您的情况下,额外的onReceive()调用似乎来自您之前设置的报警(calendar.getTimeInMillis())这是在重新启动后触发的。从文档“如果指定的触发时间是过去的,则会立即触发报警,报警计数取决于触发时间相对于重复间隔过去的距离。”,在您的情况下,看起来额外的onReceive()调用来自您之前设置的报警(calendar.getTimeInMillis())重新启动后触发的。
public class OneShotAlarm extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
// calling multiple times`enter code here`
}
}