AlarmManager是否基于设备的当前时间?

时间:2016-06-06 03:45:42

标签: java android alarmmanager android-pendingintent android-date

我有一个应用程序,它与设备的系统时钟有一个单独的(可以这么说).. Clock。从那个时钟开始,如果时钟到达特定时间,我需要创建一个警报。现在我使用AlarmManagerPendingIntent来创建警报,但它只需要long triggerAtMillis作为参数。这是基于设备的系统时钟吗?

根据javadocs的{​​{1}}:

AlarmManager.setRepeating()

那么 * @param triggerAtMillis time in milliseconds that the alarm should first * go off, using the appropriate clock (depending on the alarm type). 意味着什么?

2 个答案:

答案 0 :(得分:2)

虽然AlarmManager适用于设备时间,但是您可以提供触发警报的时间。

因此,您可以计算自定义时钟和设备时钟之间的差异,然后将时间相应地传递给AlarmManager

您可以尝试这样的事情

第1步获取设备时钟和时钟的当前时间并减去它们以获得差异

第2步根据差异,您现在可以根据时钟时间计算设备时间

第3步现在根据该时间设置AlarmManager,这是相当于自定义时钟时间的设备时间。

虽然这是一种解决方法,但这是我能想到的。

希望这会有所帮助:)

答案 1 :(得分:0)

根据docs

  

警报有两种通用时钟类型:“已用实时”和“实时时钟”(RTC)。经过实时使用“自系统启动以来的时间”作为参考,实时时钟使用UTC(挂钟)时间。这意味着经过的实时时间适合根据时间的推移设置警报(例如,每隔30秒触发一次警报),因为它不受时区/区域设置的影响。实时时钟类型更适合依赖于当前区域设置的警报。

时间取决于当地本地,因为suer改变了本地设置,它也会影响你的闹钟。 您也可以根据自己的意愿使用RTC方法