倒计时任务
// 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的时候,表示任务只执行一次。
网友评论