定时任务有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类线程安全。