【问题标题】:alarm manager not working while updating interval time更新间隔时间时警报管理器不工作
【发布时间】:2017-08-01 10:19:47
【问题描述】:

在阅读了所有 QA 之后,我没有得到任何合适的解决方案。 我有 2 个问题
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);
    }
}

报警解除方法:

public void cancelAlarm(AlarmManager alarm,PendingIntent p)
{
    alarm.cancel(p);
    Log.d("Alarm","Alarm Cancle");
}

在我的项目应用程序类中,我必须以 10 分钟的时间间隔启动警报,并且它工作正常,根据用户输入值我需要更新时间间隔。
所以我用 int min 输入值调用这个方法并取消第一个警报。
但是在棉花糖中,它每 5 秒触发一次,而 kitkat lollipop 它会触发 randmoly。
甚至使用 setExact() 方法检查

【问题讨论】:

    标签: android broadcastreceiver repeatingalarm


    【解决方案1】:

    我有同样的问题,使用 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);}
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多