Android 多次接收报警复位触发方法

Android 多次接收报警复位触发方法,android,Android,我有一个多次设置闹钟的接收器。当我启动设备时,我正在使用启动接收器和调用服务来重置先前设置的警报。假设我设置了三个报警,但是onreceive()被多次触发 以下是用于重置报警的维修代码: sender = PendingIntent.getBroadcast(UpdateService.this,nofify_id, intent1, PendingIntent.FLAG_ONE_SHOT); if(Bu

我有一个多次设置闹钟的接收器。当我启动设备时,我正在使用启动接收器和调用服务来重置先前设置的警报。假设我设置了三个报警,但是onreceive()被多次触发

以下是用于重置报警的维修代码:

   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`

}

}