安卓定时器时间表



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

mTimer = new Timer();
mTimer.schedule(new TimerTask() {
 @Override
 public void run() {
  //Do Something
 }
}, interval, interval);

这工作正常。我在提到的间隔后收到事件。但是,如果日期设置为小于设置中的当前日期,则无法发送任何事件。

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

当您

更改系统时钟时,Timer失败,因为它基于 System.currentTimeMillis() ,这不是单调的。

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

使用此代码.. 这将帮助你..

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);
    }

最新更新