请教一个Timer定期执行的问题

Timer的原理:周期性执行,如果定为每天10点执行,改变手机时间,会不会导致执行时间提前或者推迟? 执行一次,如果定为明天10点,我现在修改日期到明天的9:58,那是否会过2分钟就会执行?

如果使用Timer进行周期性执行,并将其设置为每天10点执行,改变手机时间会影响Timer的执行时间。

改变手机时间导致执行时间提前或推迟:
当您将手机时间向前调整(比当前时间更靠近10点),Timer会立即触发任务执行,因为它会认为定时时间已经到达。同样地,当您将手机时间向后调整(比当前时间更远离10点),Timer会延迟执行,因为它会等待系统时钟达到10点才会触发执行。

定时任务执行的情况:
如果您将定时器设置为明天10点执行,并且此时当前时间是今天的9:58,那么无论您将手机时间调整到哪个时间点,Timer都不会在过2分钟后立即触发执行。Timer会等待系统时钟达到明天的10点才会执行任务。

Timer是依赖于系统时钟的,在定时任务的执行上,它会根据系统时钟来触发任务。如果您频繁地改变手机时间,可能会导致定时任务的执行时间不稳定。对于需要精确定时的任务,建议使用其他更为准确的定时调度方式,如AlarmManager。

写一个获取服务器时间的接口,使用服务器的时间进行定时处理。

要实现这样的定时,应该使用闹钟(AlarmManager)。而且不管是什么定时,app在运行才会有效,杀掉了就没了,如果是给用户手机用的,就不用想了,如果是在自己终端,有系统权限的,倒是可以。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

timer 定时应该是精确的。系统AlarmManager 精确闹钟需要权限,普通app不能申请精确闹钟权限。 精确定时官方推荐使用workmanager