对于setAlarm()参数:我应该使用SystemClock.elapsedRealtime(),calander,getTimemillise还是其他什么?
因为闹钟来了,但是当我手动转到我的Android手机日期和时间设置并更改时间(不是过去,而是将来的时间)时,闹钟不会来并立即触发。
这是官方警报管理器文档中为所有设置方法指定的预期行为。
如果规定的触发时间是过去,则警报将立即触发。
要进行管理,您可以尝试在接收器中取消具有过去触发时间的此类警报。
如何选择 System.currentTimeMillis() vs SystemClock.elapsedRealtime()
由于链接指定:-
-
第一种方法,将为您提供表示毫秒的标准"壁挂"时钟(时间和日期),并受到设置中时间和日期的影响和变化。
-
对于第二种方法,返回自系统启动以来的时间(以毫秒为单位),包括睡眠时间。因此,不会受到设置更改的影响,因此它是通用间隔计时的推荐基础。
因此,如果您不希望时间依赖于 时区变化 ,最好使用第二种方法。否则,您需要如前所述处理它。
与日期或日历等其他替代方案相比,由于性能优势,最好使用当前TimeMillis()。