美文网首页
Android 与时间相关的任务

Android 与时间相关的任务

作者: 愈强 | 来源:发表于2020-09-03 12:08 被阅读0次

倒计时任务

// android.os.CountDownTimer
public abstract class CountDownTimer {

    /**
     * @param millisInFuture 倒计时启动(start)之后,过多长时间结束(单位毫秒)
     * @param countDownInterval onTick方法调用频率(单位毫秒)
     */
    public CountDownTimer(long millisInFuture, long countDownInterval) {...}

    /**
     * 启动倒计时
     */
    public synchronized final CountDownTimer start() {...}

    /**
     * 取消倒计时
     */
    public synchronized final void cancel() {...}

    /**
     * 按照设置的时间间隔重复调用
     * @param millisUntilFinished 剩余时间
     */
    public abstract void onTick(long millisUntilFinished);

    /**
     * 倒计时结束时调用
     */
    public abstract void onFinish();
}

使用CountDownTimer时需要实例化一个子类,并实现onTick、onFinish方法。调用start方法开启倒计时,cancel方法取消倒计时。

定时任务

传统的Java库提供了Timer(java.util.Timer)用于执行定时任务。

// java.util.Timer
public class Timer {

    /**
     * 在指定的时间之后执行任务。
     *
     * @param task  要执行的任务。
     * @param delay 延时时间(单位毫秒)。
     */
    public void schedule(TimerTask task, long delay) {...}
}

实例化一个Timer对象与一个TimerTask(java.util.TimerTask)对象,使用Timer.schedule方法将Task放入Timer的任务队列中即可自动执行。

Timer内维护了一个线程用于执行任务,可以把Timer看做一个特殊的单线程池。

使用TimerTask的cancel方法可以停止指定的任务。使用Timer的cancel会取消所有的任务,同时退出线程。

定时任务和倒计时任务类似,只是一个由Android SDK提供,一个由Java SDK提供。另外CountDownTimer要简单一些,而Timer则提供了更多的功能。

循环任务

上文的Timer类还提供了执行循环任务的方法:

// java.util.Timer
public class Timer {
    /**
     * 在指定的时间之后执行任务。
     *
     * @param task  要执行的任务。
     * @param delay 延时时间(单位毫秒)。
     * @param period 循环任务的循环时间间隔(单位毫秒)。
     */
    public void schedule(TimerTask task, long delay, long period) {...}
}

还是那个schedule方法,只不过添加了一个period参数,这个参数用于指定循环任务的循环间隔。当这个值为0的时候,表示任务只执行一次。

相关文章

网友评论

      本文标题:Android 与时间相关的任务

      本文链接:https://www.haomeiwen.com/subject/jbpnsktx.html