我正在构建一个Android应用程序,该应用程序必须定期在Service中执行某些操作。而且我发现使用ScheduledThreadPoolExecutor
和ScheduledExecutorService
优于Timer
。
谁能解释ScheduledExecutorService
和ScheduledThreadPoolExecutor
之间的区别,哪一种更适合Android?
更新
我刚刚发现this article和this post解释了实现重复性周期性任务的几种方法之间的区别。就我而言,ScheduledThreadPoolExecutor
和AlarmManager
更合适。
最佳答案
ScheduledExecutorService
是一个接口(interface)(契约(Contract)),并且ScheduledThreadPoolExecutor
实现该接口(interface)。
由于无法直接实例化接口(interface),因此必须通过直接实例化ScheduledThreadPoolExecutor
或通过工厂方法(例如java.util.concurrent.Executors
)来返回ScheduledThreadPoolExecutor
实例来使用实现。
例如
ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); //returns a ScheduledFuture
看看Scheduled Executor Service Usage for Andriod