首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能在安卓系统中暂停和恢复TimerTask?

有没有可能在安卓系统中暂停和恢复TimerTask?
EN

Stack Overflow用户
提问于 2010-07-31 05:21:03
回答 1查看 3K关注 0票数 0

我将其称为任务:

代码语言:javascript
复制
TimerTask taskA = new ThreadA(this);
TimerTask taskB = new ThreadB(this);

tasks.add(taskA);
tasks.add(taskB);

timer.schedule(taskA, 10000);
timer.schedule(taskB, 5000);

下面是两个TimerTasks:

代码语言:javascript
复制
public class ThreadA extends TimerTask {

    private Ghost ghost;

    public GhostThread(Ghost ghost) {
        this.ghost = ghost;
    }

    @Override
    public void run() {
        ghost.stopBeingDeadAndBeAwesomeAgain();
    }
}

public class ThreadB extends TimerTask {

    private Ghost ghost;

    public WarnThread(Ghost ghost) {
        this.ghost = ghost;
    }

    @Override
    public void run() {
       ghost.beDeadAgain();
    }

}

正如你所看到的,我只是在5个resp之后调用一个方法。10秒。我想不时地暂停“倒计时”。这意味着我希望直到5秒过去的时间不再运行。然后在稍后的时间点,我想恢复它。

我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2010-07-31 05:45:23

最简单的解决方案是简单地复制一份TimerTask,取消它以暂停,如果您想要清除,然后重新安排它以恢复。

代码语言:javascript
复制
// pause
long timeLeft = 5000 - (new Date().getTime() - taskB.scheduledExecutionTime());
ThreadB taskBpaused = taskB.clone();
taskB.cancel();
timer.purge();
taskB = taskBpaused;

// resume
timer.schedule(taskB, timeLeft, ...);

重要提示:如果任务还没有运行,那么这将不起作用。谷歌的文档指出,如果它没有运行,scheduledExecutionTime()将返回an undefined value,而我目前没有能力测试这到底是什么意思。不用说,如果您不确定它是否已经运行,您将需要某种条件来确保该值不是未定义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3375434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档