定时器任务在服务中行为不端

时间:2015-08-10 05:39:29

标签: android timertask

我正在使用计时器任务以固定的时间间隔执行asynctask,时间为五分钟。但计时器任务有时会开始行为不端,就像它没有得到的那样 实际上,在固定延迟时间后,它会在10分钟后执行两次,而不是每5分钟执行一次,为什么会这样?

这是我的代码

    Timer timer = new Timer();
            mytimer Mytimer = new mytimer();

            timer.scheduleAtFixedRate(Mytimer, 300000, 300000);


class Mytimer extends TimerTask {
        @Override
        public void run() {
            // TODO Auto-generated method stub

            new DetailPosition().execute();
        }
    }

请帮助我

1 个答案:

答案 0 :(得分:2)

如果计时器任务是在所有线程都在使用的线程池上调度的,那么它必须等待一个线程在运行任务之前可用。

考虑以下内容 -

 ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();    
ses.scheduleAtFixedRate(() -> {Thread.sleep(500); System.out.println(new Date());}, 0, 200, TimeUnit.MILLISECONDS);

此处任务所需的时间比间隔长,因此任务将排队,直到内存不足为止。