Android Java Timer & TimerTask 学习

来源:互联网 发布:银行数据分析师做什么 编辑:程序博客网 时间:2024/06/05 14:06

Java中用Timer和TimerTask实现周期性任务或者定时(延时)执行任务,一般形式如下:

// 声明一个类继承自TimerTask    private class TimerTask1 extends TimerTask {        int p = 1;    @Overridepublic void run() {// TODO Auto-generated method stubhandler.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stub}});}    }
由此看出TimerTask类本身就是一个线程类,因此Timer&TimerTask所完成的任务都为多线程的。

由此可以想到在Android开发中可以配合Handler使用。

用Timer启动TimerTask的形式:Timer的schedule方法。6种重载:

  Timer timer = new Timer();  timer.schedule(task, when); // 1  timer.schedule(task, delay); // 2  timer.schedule(task, when, period); // 3  timer.schedule(task, delay, period); // 4  timer.scheduleAtFixedRate(task, when, period); // 5  timer.scheduleAtFixedRate(task, delay, period); // 6

1. 定时启动任务

2. 延时启动任务

3. 定时周期任务

4. 延时周期任务

5. 定时周期任务(固定频率)

6. 延时周期任务(固定频率)

注:schedule 与 scheduleAtFixedRate 的区别在于当你设置的开始时间小于当前时间时,举个例子:

假如当前是16:55,而你定的开始时间是16:52,延时都是2分钟。

此时你如果用schedule方法,那么任务快速执行一次之后会以当前时间为开始时间,然后以2分钟为时间间隔执行周期任务。

此时你如果用scheduleAtFixedRate方法,那么任务依然以16:52为开始时间,然后马上执行1次(16:54 的那次1次),随后在16:56再执行,后面继续进行周期性任务。




原创粉丝点击