不精确的AlarmManager.setRepeating问题

时间:2014-04-10 15:29:41

标签: android alarmmanager

我在API 19中阅读了几篇文章,所有重复报警都是不准确的。 这是否意味着,运行Android 4.4的每台设备都无法执行完全重复的操作?或者我可以通过使用android:targetSdkVersion =" 18"在这些设备上简单地避免这种情况。在我的项目中。

我认为我不需要API 19的功能,但无论如何,每次调用警报时使用setExact并更新时间是否更好?在我的应用程序中,用户应该设置每天通知他的时间。

1 个答案:

答案 0 :(得分:5)

  

这是否意味着,运行Android 4.4的每台设备都无法执行完全重复的操作?

这意味着,如果您的set()为19或更高,默认情况下setRepeating()android:targetSdkVersion等方法现在都不准确。有一个setExact()可用于确切的警报,由您自己实施重复部分,通过再次调用setExact()作为处理前一个{{1}触发的工作的一部分。 1}}来电。

  

或者我可以在我的项目中使用android:targetSdkVersion =“18”在这些设备上避免这种情况。

是的,你可以避免这种情况。但最终,有些东西会迫使你的setExact()提高到19或更高。这意味着最终,您需要根据不精确的行为调整您的应用,或者如上所述使用android:targetSdkVersion

  

使用setExact并在每次调用警报时更新时间是一种更好的方法吗?

由于API级别19之前不存在setExact(),因此您只能在较新的设备上使用此功能。将setExact()设置为19或更高后,您需要在这些较新的设备上开始使用android:targetSdkVersion,同时仍在旧设备上使用setExact()set()。我不知道在setRepeating()低于19的情况下使用setExact()会有什么好处。