2015-09-10 2 views
11

Я создаю приложение для Android, которое должно периодически что-то делать в Сервисе. И я обнаружил, что использование ScheduledThreadPoolExecutor и ScheduledExecutorService предпочтительнее Timer.ScheduledExecutorService или ScheduledThreadPoolExecutor

Может ли кто-нибудь объяснить разницу между ScheduledExecutorService и ScheduledThreadPoolExecutor и какой из них больше подходит для Android?

Update

Я только что нашел this article и this post объяснить разницу между несколько способом реализации повторяющимся периодическими задачами. В моем случае больше подходит ScheduledThreadPoolExecutor и AlarmManager.

+0

ли вы думаете об использовании обработчика? – Fildor

+0

[Handler] (http://developer.android.com/reference/android/os/Handler.html) имеет различные методы для планирования кода для выполнения. – Fildor

ответ

5

ScheduledExecutorService является интерфейсом (контракта) и ScheduledThreadPoolExecutor реализует этот интерфейс.

Поскольку вы не можете напрямую создать интерфейс, вам необходимо использовать реализацию путем создания экземпляра 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

3

Это то же самое, ScheduledThreadPoolExecutor является реализация ScheduledExecutorService

2

Creating ScheduledThreadPoolExecutor Using Executors

Вы также можете посмотреть этот один

http://tutorials.jenkov.com/java-util-concurrent/scheduledexecutorservice.html

, если вы хотите использовать его периодически, вы должны использовать этот метод

scheduleAtFixedRate (Runnable , Длинные initialDelay, длительный период, TimeUnit TimeUnit)