Android计时器计划

时间:2016-01-07 04:46:46

标签: android timer task scheduled-tasks android-timer

以下是我在项目中用来安排任务的代码片段

mTimer = new Timer();
mTimer.schedule(new TimerTask() {

 @Override
 public void run() {
  //Do Something
 }

}, interval, interval);

这很好用。我提到间隔后得到事件。但如果将日期设置为小于设置中的当前值,则无法发送任何事件。

有没有人知道为什么会发生这种行为?

2 个答案:

答案 0 :(得分:4)

更改系统时钟时

Timer失败,因为it's based on System.currentTimeMillis()不是单调的。

Timer不是Android类。它是Android API中存在的Java类,用于支持现有的非Android库。在新的Android代码中使用Timer几乎总是一个坏主意。使用Handler可以在应用的活动或服务的生命周期内发生定时事件。 Handler is based on SystemClock.uptimeMillis() 单调。使用Alarm即使您的应用未运行,也应该发生定时事件。

答案 1 :(得分:0)

使用此代码..这将对您有所帮助..

Timer t;
seconds = 10;

public void startTimer() {
        t = new Timer();
        //Set the schedule function and rate
        t.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (seconds == 0) {
                            t.cancel();
                           seconds = 10;
                      // DO SOMETHING HERE AFTER 10 SECONDS
                       Toast.makeText(this,"Time up",Toast.LENGTH_SHORT).show();
                        }
                        seconds -= 1;
                    }
                });
            }
        }, 0, 1000);
    }