我在我的程序中使用方法scheduleAtFixedRate(Timer类)。它每隔一秒运行一次,但有时这种方法变得非常快(它每秒执行3-4次)。
然而,我在网上做了一些研究,我发现了这个:
从Android开发者的页面复制:
使用固定费率执行时,将安排每次连续运行任务的开始时间,而不考虑上次运行的时间。如果延迟阻止计时器按时启动任务,这可能会导致一系列的聚合运行(一个紧接着一个启动)。
我需要固定计时器。它应该只运行每x时一次而不执行任何快速执行。是否有scheduleAtFixedRate方法的替代方法,或者我需要对此方法感到满意吗?
答案 0 :(得分:1)
可以考虑Timer类中的方法调度,即使它不能保证任务每次执行一次x'一段时间。
public void schedule(TimerTask task, Date firstTime, long period)
至少不会像你说的那样重复执行。
答案 1 :(得分:0)
如果您的任务运行时间超过1秒,您可以使用ScheduledExecutorService尝试使用多个线程。
语法与Timer非常相似,但它是一个更健壮,更灵活的API。