我有一个单独的应用程序(可以这么说)..Clock
从设备的系统时钟。从那个时钟,我需要创建一个闹钟,如果那个时钟到达特定的时间。现在我使用AlarmManager
和PendingIntent
来创建一个警报,但是它只使用long triggerAtMillis
作为参数。这是基于设备的系统时钟吗?
根据javadocs
of AlarmManager.setRepeating()
* @param triggerAtMillis time in milliseconds that the alarm should first
* go off, using the appropriate clock (depending on the alarm type).
那么appropriate clock
是什么意思呢?
发布于 2016-06-05 20:08:16
虽然AlarmManager
在设备时间上工作,但触发警报的时间由您提供。
因此,您可以计算自定义时钟和设备时钟之间的差异,然后相应地将时间传递给AlarmManager
。
你可以试试这样的东西
步骤1获取设备时钟和您的时钟的当前时间,并减去它们以得到差值。
步骤2与之不同,现在可以根据时钟时间计算设备时间。
步骤3现在根据该时间设置AlarmManager
,这是与您的自定义时钟时间相当的设备时间。
虽然这是一个解决方案,但这正是我所能想到的。
希望这会有所帮助:)
发布于 2016-06-05 20:29:41
根据文档
警报有两种常用的时钟类型:“经过实时”和“实时时钟”(RTC)。经过的实时时间使用“自系统启动以来的时间”作为参考,而实时时钟使用UTC (挂钟)时间。这意味着经过的实时时间适合于根据时间的推移设置警报(例如,每30秒发出一次警报),因为它不受时区/区域设置的影响。实时时钟类型更适合于依赖于当前区域设置的警报。
时间取决于当前本地,当用户更改本地设置时,它也会影响您的警报。此外,您也可以根据您的意愿使用RTC方法。
https://stackoverflow.com/questions/37649255
复制