Android定時任務

參考:
Android中定時器的3種實現方法


Thread.sleep

java的方式,不推薦
sleep使線程暫停,如果需要循環,需要手動設置while之類。

實現方式:

  • 定義Handler類:接收消息並處理
Handler handler = new Handler() {  
    public void handleMessage(Message msg) {  
        // 要做的事情  
        super.handleMessage(msg);  
    }  
};
  • 定義一個實現Runnable接口的線程類:該線程循環發送消息,並用sleep設置時間間隔。
public class MyThread implements Runnable {  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        while (true) {  
            try {  
                Thread.sleep(5000);// 線程暫停5秒,單位毫秒  
                Message message = new Message();  
                message.what = 1;  
                handler.sendMessage(message);// 發送消息  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
    }  
}  
  • 啓動線程:
new Thread(new MyThread()).start(); 

postDelayed(Runnable, long)

最簡單的android實現
該方法在一定時間後啓動Runnable對象

  • 設置一個Handler
Handler handler = new Handler();
  • 設置runnable,在其中用handler再次調用runnable以實現循環,間隔即爲循環時間間隔
Runnable runnable=new Runnable(){
   @Override
   public void run() {
    // TODO Auto-generated method stub
    //要做的事情,這裏再次調用此Runnable對象,以實現每兩秒實現一次的定時器操作
    handler.postDelayed(this, 2000);
   } 
};
  • 啓動線程時,如果不需要延時,可以直接runnable.run();,如果需要延時開始,則調用handler.postDelayed(runnable, 1000);
  • 停止計時器handler.removeCallbacks(runnable);

Timer&TimerTask

比較多的任務時建議使用

 TimerTask task = new TimerTask(){
   public void run(){
        //execute the task
        
    }
};
Timer timer = new Timer();
timer.schedule(task, 250);

此處是僅延時執行,schedule方法還可以加上一個參數作爲定時執行的間隔時間,即schedule(TimerTask task, long delay, long period)

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