TimerTask的使用

在開發中咱們有時會有這樣的需求,即在固定的每隔一段時間執行某一個任務。好比UI上的控件須要隨着時間改變,咱們能夠使用Java爲咱們提供的計時器的工具類,即Timer和TimerTask。 

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);
相關文章
相關標籤/搜索