Похоже, вы делаете это правильно. Который заставил меня прочитать в java-документах, и вот что я нашел, что я нахожу удивительным.
Если какое-либо выполнение задачи встречает исключение, последующие исполнения будут подавлены.
ScheduledExecutorService.scheduleWithFixedDelay()
Есть ли шанс, что код в работоспособном производит исключение, которое вызывает запланированный Исполнитель прекратить выполнение? Неужели вы бы упомянули об этом?
Но, как я уже сказал, я нахожу это удивительным для чтения, поскольку я думал, что запланированный исполнитель обрабатывает исключения, так что последующее выполнение задачи НЕ подавляется. И это одна из главных причин, которые следует предпочесть вместо классического Timer. Но теперь я вижу в javadoc, что я, по-видимому, ошибся ...
Я не очень хорошо знаком с платформой Android, но, возможно, есть разница в возможностях java.util.concurrent между JVM от Oracle и Dalvik от Android, поэтому JVM JVM от Oracle не может быть хорошей идеей в конце концов.
EDIT: Действительно Javadoc метода фабрики говорит, что
(Заметим, однако, что если один поток завершается из-за сбоя во время выполнения до выключения, новый займет свое место, если необходимы для выполнения последующих задач)
Executors.newSingleThreadScheduledExecutor()
EDIT2:. Java-документ Oracle и Dalvik кажется практически неотличимым.
Опасайтесь, '' TimeUnit.MINUTES' не будет существовать на Android '' (http://stackoverflow.com/questions/3472423/android-java-util-concurrent-timeunit-convert-milliseconds-to-minutes) –