我应该使用setAlarm,setExact或setRepeat Alarm吗?

时间:2019-04-08 11:43:03

标签: android

对于setAlarm()参数:我应该使用SystemClock.elapsedRealtime(),calander,getTimemillise还是其他东西?

因为警报会很好,但是当我手动转到Android手机的日期和时间设置并更改时间(不是过去,而是将来的时间)时,警报就不会出现并立即触发。

1 个答案:

答案 0 :(得分:0)

这是官方Alarm Manager 文档中为所有设置方法指定的预期行为。

  

如果指定的触发时间已过去,警报将立即触发。

要进行管理,您可以尝试在接收器中以过去的触发时间取消此类警报。

如何选择 System.currentTimeMillis() vs SystemClock.elapsedRealtime()

该链接指定了:-

  1. 第一种方法将为您提供标准的“挂墙”时钟(时间和日期),以毫秒为单位,并且受设置中时间和日期的影响以及更改。

  2. 使用第二种方法时,返回自系统启动以来的时间(以毫秒为单位),包括睡眠时间。因此不会受到设置更改的影响,因此它是通用间隔定时的推荐基础。

因此,如果您不希望时间取决于时区变化,则最好使用第二种方法,否则您需要按照前面提到的方法进行处理。

与其他替代方法(例如Date或Calender)相比,由于具有性能优势,因此最好使用currentTimeMillis()。