Android重复任务不起作用

时间:2012-04-07 23:54:03

标签: android scheduled-tasks task repeat executorservice

你可以帮帮我吗? 我实现了一个执行器和scheduledWithFixedDelay,但它只执行了一次.... 我想以一种重复的方式完成这项任务......

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
    executor.scheduleWithFixedDelay(new Runnable(){

        public void run() {
            updateList();
        }

    }, updateTime, updateTime, TimeUnit.MINUTES);

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

看起来你正在以正确的方式做到这一点。 这让我读了java文档,这里是我发现的,我发现自己很惊讶。

  

如果任务的任何执行遇到异常,则后续   执行被压制。

ScheduledExecutorService.scheduleWithFixedDelay()

runnable中的代码是否有可能产生异常,导致Scheduled Executor终止执行?你肯定会提到那个吗?

但正如我所说的那样,我发现这令人惊讶,因为我认为Scheduled Executor会处理异常,因此不会抑制后续任务执行。而这是首选的主要原因之一,而不是经典的Timer。但现在我在javadoc中看到我显然认为错了......

我对Android平台并不是很熟悉,但是Oracle的JVM和Android的Dalvik之间的java.util.concurrent设备可能存在差异,所以考虑到Oracle的JVM javadocs可能不是一个好主意。

编辑: 实际上,工厂方法的javadoc说明了

  

(但请注意,如果此单个线程由于失败而终止   在关闭之前执行期间,如果是,新的将取代它   需要执行后续任务。)

Executors.newSingleThreadScheduledExecutor()

EDIT2: Oracle和Dalvik的java doc似乎几乎无法区分。