官方网址:http://developer.android.com/reference/java/util/Timer.html
实现定时器的功能,有如下几种方法:定时器可以有个名称(name),也可以没有。
定时器,从线程类型的角度,可以分为如下两种:定时器,从执行次数的角度,可分为如下两种:
1、仅执行一次;属于这种的,有如下的两个成员函数:
schedule(TimerTask task, Date when)
schedule(TimerTask task, long delay)
2、循环执行;属于这种的,有如下的四个成员函数:
schedule(TimerTask task, Date when, long period)
schedule(TimerTask task, long delay, long period)
scheduleAtFixedRate(TimerTask task, long delay, long period)
scheduleAtFixedRate(TimerTask task, Date when, long period)
前两个,保证执行间隔是稳定的;两个,保证执行时间是稳定的。
定时器,还可以取消(cancel())和清理(purge(),即清除所有已取消的)
在JDK1.5之前,定时/周期操作都是通过Timer来实现的。但是Timer有以下几种危险:
1、Timer是基于绝对时间的。容易受系统时钟的影响。
2、Timer只新建了一个线程来执行所有的TimeTask;所有TimeTask可能会受相关影响。
3、Timer不会捕获TimerTask的异常,只是简单地停止;这会影响其他TimeTask的执行。
如果使用JDK1.5以上版本,建议用ScheduledThreadPoolExecutor代替Timer。
它采用相对时间,用线程池来执行TimerTask,会处理TimerTask异常。
它基本上解决了上述的所有问题。