我发现强烈建议不要使用scheduleAtFixedRate,因为当Android进程被缓存时,它可能会导致意外的行为(当进程从缓存变为未缓存时,任务可能会意外地快速连续执行数百或数千次)。有人可以详细说明一下吗? Android 中关于 ScheduleAtFixedRate 的具体问题是什么?建议使用哪些替代方法来处理 Android 应用程序中的周期性任务?
Timer.scheduleAtFixedRate()
的行为:
在固定速率执行中,每次执行都是相对于初始执行的预定执行时间来安排的。
因为
TimerTask
的执行被安排在相对于初始调度时间的精确时刻,所以当进程未缓存时,将会有许多计划执行需要立即执行,因为它们的计划执行时间在过去。
想象一下以下时间:
scheduleAtFixedRate(timer, 10000L, 10000L)