java Android计时器时间表与scheduleAtFixedRate
我正在编写一个Android应用程序,每10分钟录制一次音频。我用定时器来做这个。但是scheduleAtFixedRate和scheduleAtFixedRate有什么区别呢?使用其中一种方法比使用另一种方法有什么性能优势吗
你可以在下面搜索框中键入要查询的问题!
我正在编写一个Android应用程序,每10分钟录制一次音频。我用定时器来做这个。但是scheduleAtFixedRate和scheduleAtFixedRate有什么区别呢?使用其中一种方法比使用另一种方法有什么性能优势吗
# 1 楼答案
这种差异最好用this non-Android documentation来解释:
固定速率计时器(
scheduleAtFixedRate()
)基于开始时间(因此每个迭代将在startTime + iterationNumber * delayTime
执行)固定延迟计时器(
schedule()
)基于之前的执行(因此每个迭代将在lastExecutionTime + delayTime
执行)除此之外,没有区别。你也不会发现显著的性能差异
如果你在想与其他东西保持同步的情况下使用这个,你会想使用
scheduleAtFixedRate()
。来自schedule()
的延迟可能会漂移并引入误差# 2 楼答案
一个简单的
schedule()
方法将立即执行,而scheduleAtFixedRate()
方法需要额外的参数,用于再次重复任务&;再次在特定的时间间隔通过查看语法:
这将在30秒的时间间隔结束后执行一次。一种时间行动
这将在1秒后开始,每隔30秒重复一次
# 3 楼答案
如果是计划,它只在适当的时候执行一次。另一方面,scheduleAtFixedRate有一个额外的参数period,它包含后续执行之间的时间量(以毫秒为单位)
更多信息可以在这里找到
http://developer.android.com/reference/java/util/Timer.html#schedule(java.util.TimerTask,长)