Android中如何實現定時任務
阿新 • • 發佈:2018-11-01
定時任務有3種方法,參考了原文章
- 採用Handler與執行緒的sleep(long )方法(不建議使用,Java的實現方式)
- 採用Handler的postDelayed(Runnable,long)方法
- 採用Handler與timer及TimerTask結合的方法(任務較多時使用)
Hander與執行緒的sleep(long)方法
1)定義一個Handler類,用以處理接收到的Message:
Handler handler=new Handler(){ public void handleMessage(Message msg){ //... } }
2)新建一個實現Runnable的介面類:
public class MyThread implements Runnable{ @Override public void run(){ while(true){ try{ Thread.sleep(10000);//執行緒暫停10s handler.sendEmptyMessage(1); }catch(InterruptedException e){ e.printStackTrace(); } } } }
3) 啟動執行緒
new Thread(new MyThread()).start();
Handler的postDelayed(Runnable,long)方法
1)新建一個Handler類:
Handler handler=new Handler(){ public void handleMessage(Message msg){ //... } } Runnable runnable=new Runnable( @Override public void run(){ handler.sendEmptyMessage(1); //要做的事情 } }
2)啟動計時器
handler.postDelayed(runnable,2000);
3)停止計時器
handler.removeCallbacks(runnable);
Handler與timer及TimerTask結合的方法
1)定義定時器、定時器任務及Handler:
private final Timer timer=new Timer();
private TimerTask task;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg){
//TODO
}
}
2)初始化計時器任務
task=new TimerTask(){
@Override
public void run(){
handler.sendEmptyMessage(1);
}
}
3)啟動計時器
timer.schedule(task,2000,2000);
4)停止計時器
timer.cancel();
Timer類執行緒安全。