Android Java Timer & TimerTask 学习

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

// 声明一个类继承自TimerTask
    private class TimerTask1 extends TimerTask {
    	
    	int p = 1;
    	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		handler.post(new Runnable() {

			@Override
			public 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再执行,后面继续进行周期性任务。




你可能感兴趣的:(java,timer,android,任务,delay)