Android中经常会遇到执行一些周期性定时执行的任务。初学的时候经常会使用Thread.sleep()方法。在android中,有Timer可以专门干这个事情。
先看看Timer.class中都是些什么。看到前几行代码的时候就应该知道了….Timer中有个静态内部类:TimerImplTimerImpl有个静态内部类:TimerHeapTimerImpe继承Thread,用来实现具体的任务执行内容。TimerHeap定义了一个TimerTask的数组,用来管理多个TimerTask的分配。使用静态内部类的好处,是可以多个Timer对象可以共用。 下面看看TimerTask.class 好吧,比Timer还简单,就是Runnable的一个实现。只不过多了几个对象lock:对象锁,在Timer中对TimerTask操作的时候,保证同步,线程安全。cancelled:标志变量,当前TimerTask是否已经被取消执行。when:Timer执行TimerTask时,延时多少时间。period:Timer执行TimerTask时,周期时间。fixedRate:是否已固定频率执行,比如一个TimerTask,执行周期为3秒,可能一个任务3秒内没有执行完毕,fixedTate为true,那么接下来的任务依然会执行。如果为fasle,接下来的任务会等到之前的执行完毕后,继续周期执行。 使用方法也很简单: 最后一行代码:timer.schedule(task,1000,3000)意思是:在1秒之后 以周期为3秒 执行task。