我正在编写一个每 10 分钟记录一次音频的 Android 应用程序。我正在使用计时器来做到这一点。但是schedule和scheduleAtFixedRate有什么区别呢?使用其中一种比另一种有性能优势吗?
差异最好的解释是这个非 Android 文档 http://carbon.sourceforge.net/modules/scheduler/docs/Usage.html:
固定速率定时器(scheduleAtFixedRate()
)基于开始时间(因此每次迭代将在startTime + iterationNumber * delayTime
).
在固定速率执行中,每次执行都是相对于初始执行的计划执行时间来计划的。如果执行因任何原因(例如垃圾收集或其他后台活动)而延迟,则将快速连续发生两个或多个执行以“赶上”。
固定延迟定时器(schedule()
)基于先前的执行(因此每次迭代将在lastExecutionTime + delayTime
).
在固定延迟执行中,每次执行都是相对于前一次执行的实际执行时间来安排的。如果执行因任何原因(例如垃圾收集或其他后台活动)而延迟,则后续执行也将被延迟。
除此之外,没有什么区别。您也不会发现显着的性能差异。
如果您在想要与其他内容保持同步的情况下使用此功能,则需要使用scheduleAtFixedRate()
。延迟从schedule()
可能会漂移并引入错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)