TimerTask的暂停/恢复方案无法正常工作

时间:2016-02-29 14:26:08

标签: android timer timertask

好的,所以,我希望一段时间后运行任务并继续运行(如JS' setInterval()函数,TimerTask有一个名为scheduleAtFixedRate的方法,基本上做同样的事情。但是,pauseresumeTimerTask.没有明确的机制

我在SO上读到,一旦取消Timer,它就会变成地狱。

我还读到可以实现解决方法。

这是我的代码:

Timer t = new Timer();
        t1 = new TimerTask() {
            @Override
            public void run() {

               //Do Something like,
a++;

            }
        };
        t.scheduleAtFixedRate(t1, 0L, 300L); /*Pretty basic till this line. Just a TimerTask ddeclaration and execution via a Timer `t`.*/

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (flag == 1) {

t.scheduleAtFixedRate(t1,0,300);//This call says "TimerTask already scheduled," even though purge removed it.
                } else {
                    t1.cancel(); //cancelling the task so that purge does something.
                    int a = t.purge();//a is 1. Purge worked. TimerTask was removed from the queue.
                    Log.d("The number of tasks",a+"");//1
                    flag = 1;
                }
            }
        });

我如何使这项工作?

但是,如果可以使用ScheduleExecutorService,是否有人能够实现此评论中提到的内容? Pause/Resume ScheduleExecutorService

1 个答案:

答案 0 :(得分:1)

比在此示例中使用Timer更好的方法是在UI线程上使用TimerTask并使用Handler来安排回调。< / p>

您没有进行任何繁重的处理或任何其他需要在单独的线程上执行回调的内容,并且正在更新需要在UI线程上完成的Handler.postDelayed(...)元素。