我如何设置确切的,在Android 4.4中重复报警?

现在,我正在设置像这样的警报:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); timedate = cal.getTime(); //convert date to milis long timeInMilis = (timedate.getTime()); //Set Alarm to Repeat manager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMilis, interval, pendingIntent); 

不幸的是,重复的计划时间是不精确的,我读到他们可能是不完整的时间间隔!

所以,我想切换到一个确切的重复报警。 我的设备只需要最低的API 19 / Android 4.4,所以我不能使用setRepeating。

我能做些什么来设置一个确切的重复报警?

  • 如何启动一个对话框(像闹钟dimiss /贪睡),可以点击不解锁屏幕
  • Android 6.0打盹模式下的闹铃pipe理器问题
  • AlarmManager的setRepeating和setInexactRepeating之间的区别
  • 检测默认的闹钟应用程序警报
  • 当您有多个警报时,取消单个警报
  • Android设置多个警报
  • 如何debugging从您的应用程序运行哪个AlarmManager报警?
  • 在RTC和RTC_WAKEUP之间的差异
  • 不幸的是,重复的计划时间是不精确的,我读到他们可能是不完整的时间间隔!

    如果你的targetSdkVersion是19或更高,是的。

    我能做些什么来设置一个确切的重复报警?

    使用setExact()来控制你的初始延迟。 然后,作为处理该事件的工作的一部分,请使用setExact()在下一个所需时间获取控件。 IOW,你自己做“重复”的部分。

    是的,这是令人生气的。

    这是故意刺激,引导开发人员不要使用确切的重复警报,因为那些比他们的不精确的兄弟更糟糕的电池。 如果用户感觉到不精确的行为并且不理解,可以随意使用setExact()来在用户需要时发生警报。 但是,如果用户不会察觉到不正确的行为,请使用不精确的警报,因为用户可能会注意到精确警报对电池的影响。