Timer是一個普通的類,其中有幾個重要的方法;而TimerTask則是一個抽象類,其中有一個抽象方法run(),相似線程中的run()方法,咱們使用Timer建立一個他的對象,而後使用這對象的scheduleAtFixedRate方法來完成這種間隔的操做。 java
schedule() 和 scheduleAtFixedRate() 的區別
1. schedule() ,2個參數方法:
在執行任務時,若是指定的計劃執行時間scheduledExecutionTime <= systemCurrentTime,則task會被當即執行。
2. schedule() ,3個參數方法:
在執行任務時,若是指定的計劃執行時間scheduledExecutionTime <= systemCurrentTime,則task會被當即執行,以後按period參數固定重複執行。
3. scheduleAtFixedRate() ,3個參數方法:
在執行任務時,若是指定的計劃執行時間scheduledExecutionTime<= systemCurrentTime,則task會首先按執行一次;而後按照執行時間、系統當前時間和period參數計算出過時該執行的次數,計算按照: (systemCurrentTime-scheduledExecutionTime)/period,再次執行計算出的次數;最後按period參數固定重複執行。
4. schedule() 和scheduleAtFixedRate()
schedule()方法更注重保持間隔時間的穩定。
scheduleAtFixedRate()方法更注重保持執行頻率的穩定。
ide
TimerTask task = new TimerTask() { @Override public void run() { mActivity.runOnUiThread(new Runnable() { @Override public void run() { } }); } };
mTimer = new Timer(); mTimer.scheduleAtFixedRate(task, 2000, 5000);