Android 更新间隔时间时报警管理器不工作
在阅读了所有的QA之后,我没有得到任何正确的解决方案。 我有两个问题Android 更新间隔时间时报警管理器不工作,android,broadcastreceiver,repeatingalarm,Android,Broadcastreceiver,Repeatingalarm,在阅读了所有的QA之后,我没有得到任何正确的解决方案。 我有两个问题 1.即使我只在清单中注册接收者,警报也会触发两次。(不是通过代码) 2.当我更新警报的间隔时间时,它会随机发生火灾 这是我设置警报的方法 public void AlarmCall(int min) { Intent intent = new Intent(context, AlarmReceiver.class); PendingIntent pintent = PendingIntent.getBroa
1.即使我只在清单中注册接收者,警报也会触发两次。(不是通过代码)
2.当我更新警报的间隔时间时,它会随机发生火灾 这是我设置警报的方法
public void AlarmCall(int min) {
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pintent = PendingIntent.getBroadcast(context,0 , intent, 0);
alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
cancelAlarm(alarm,pintent);
if(Build.VERSION.SDK_INT<18) {
alarm.set(AlarmManager.RTC_WAKEUP, 1000 * 60 * min, pintent);
}
else if(Build.VERSION.SDK_INT>=19 && Build.VERSION.SDK_INT<=22)
{ alarm.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), 1000*60*min, pintent);
}
else if(Build.VERSION.SDK_INT>=23)
{ alarm.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,1000*60*min,pintent);
}
}
在我的项目应用程序类中,我必须以10分钟的时间间隔启动警报,它工作正常,根据用户输入值,我需要更新时间间隔。因此,我使用int-min输入值调用此方法并取消第一次报警。
但在棉花糖中,它每5秒就燃烧一次,而kitkat棒棒糖则会燃烧randmoly
即使使用setExact()方法检查,我也遇到了同样的问题,使用setWindow解决了这个问题
long repeatInterval = 1000 * 60 * min;
long triggerTime = SystemClock.elapsedRealtime()
+ repeatInterval;
AlarmManager alarms = (AlarmManager) this.getSystemService(
Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= 19)
{
alarms.setWindow(AlarmManager.RTC_WAKEUP,
triggerTime,
repeatInterval,
pendingIntent);
}else{
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
triggerTime,
repeatInterval,
pendingIntent);}
long repeatInterval = 1000 * 60 * min;
long triggerTime = SystemClock.elapsedRealtime()
+ repeatInterval;
AlarmManager alarms = (AlarmManager) this.getSystemService(
Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= 19)
{
alarms.setWindow(AlarmManager.RTC_WAKEUP,
triggerTime,
repeatInterval,
pendingIntent);
}else{
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
triggerTime,
repeatInterval,
pendingIntent);}