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再執行,後面繼續進行週期性任務。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章