代码之家  ›  专栏  ›  技术社区  ›  anon

有没有可能暂停和恢复Android中的计时器任务?

  •  0
  • anon  · 技术社区  · 14 年前

    我称之为任务:

    TimerTask taskA = new ThreadA(this);
    TimerTask taskB = new ThreadB(this);
    
    tasks.add(taskA);
    tasks.add(taskB);
    
    timer.schedule(taskA, 10000);
    timer.schedule(taskB, 5000);
    

    下面是两个时间任务:

    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秒过去的时间不再运行。然后在以后的某个时间点,我想继续。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   macamatic    14 年前

    // 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