我有一个应用程序,它与设备的系统时钟有一个单独的(可以这么说).. Clock
。从那个时钟开始,如果时钟到达特定时间,我需要创建一个警报。现在我使用AlarmManager
和PendingIntent
来创建警报,但它只需要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).
意味着什么?
答案 0 :(得分:2)
虽然AlarmManager
适用于设备时间,但是您可以提供触发警报的时间。
因此,您可以计算自定义时钟和设备时钟之间的差异,然后将时间相应地传递给AlarmManager
。
您可以尝试这样的事情
第1步获取设备时钟和时钟的当前时间并减去它们以获得差异
第2步根据差异,您现在可以根据时钟时间计算设备时间
第3步现在根据该时间设置AlarmManager
,这是相当于自定义时钟时间的设备时间。
虽然这是一种解决方法,但这是我能想到的。
希望这会有所帮助:)
答案 1 :(得分:0)
根据docs
警报有两种通用时钟类型:“已用实时”和“实时时钟”(RTC)。经过实时使用“自系统启动以来的时间”作为参考,实时时钟使用UTC(挂钟)时间。这意味着经过的实时时间适合根据时间的推移设置警报(例如,每隔30秒触发一次警报),因为它不受时区/区域设置的影响。实时时钟类型更适合依赖于当前区域设置的警报。
时间取决于当地本地,因为suer改变了本地设置,它也会影响你的闹钟。 您也可以根据自己的意愿使用RTC方法