Android——定时任务

来源:互联网 发布:linux单用户模式怎么进 编辑:程序博客网 时间:2024/05/22 13:45

Android定时任务

每隔固定时间,执行重复的规律操作。一般常用刷新UI等操作。
现在一般有一下几种方法:
1:Thread.sleep(int millisecond)
2:Timer及TimerTask相结合。
3:Handler.postDelayed(Runnable, long)
4:MyCountDownTimer(long millisInFuture, long countDownInterval)

具体实现:

1:Thread.sleep(int millisecond)
Thread.sleep是线程的暂停方法,单独可以实现延迟的操作,如果在Runable 接口实现,就可以通过线程的方法多次实现类似于定时任务的操作。

单独实现:

private void runMethod(){    //开始操作    //...    //延迟一秒实现    Thread.sleep(1000);    //后续操作}

定时任务实现:
1:实现Runable接口

public class MyRunable implements Runnable {      @Override      public void run() {          // TODO Auto-generated method stub          while (true) { //这里写判断方法,实现条件             try {                  Thread.sleep(10000);// 线程暂停10秒,单位毫秒                  //定时操作,以刷新UI为例,用Handle刷新                handler.sendEmptyMessage(0x00);// 发送空消息              } catch (InterruptedException e) {                  // TODO Auto-generated catch block                  e.printStackTrace();              }          }      }  }  

2:Handle实现

private Handler myHandler;//定义Handle全局变量myHandler = new Handler(){    @Override    public void handleMessage(Message msg) {    //具体实现    }

2.Timer及TimerTask相结合
1:新建Time
Timer myTimer = new Timer();

2:新建TimeTask

TimerTask myTimerTask = new TimerTask() {    public synchronized void run() {    }};

3:Timer .schedule实现定时任务

//TimerTask :需要执行的Task。//delay :延迟时间//period 间隔时间Timer.schedule(TimerTask task, long delay, long period);    myTimer.schedule(myTimerTask,0L,180000);

3:Handler.postDelayed实现

开始需要Handle对象和Runable对象,沿用上面的。

开始启动定时器:

myHandler.postDelayed(Runnable runable, int millisecond);

取消定时器:

myHandler.removeCallbacks(Runnable runnable); 

4:CountDownTimer实现

直接新建CountDownTimer(long millisInFuture, long countDownInterval)对象,会继承相应方法,

//一共执行60秒,每1秒执行一次new CountDownTimer(60000, 1000) {    @Override     public void onTick(long millisUntilFinished) {     //每次执行任务     //...     }    @Override    public void onFinish() {         //执行结束事件         //...     }}.start();

各自优缺点:

Thread.sleep()方法结合Runable,需要外部参数判断来控制结束。不能直接通过时间来控制。
Timer及TimerTask 结合的方法功能强大,可以延迟和定时。
Handler.postDelayed,可延迟,定时执行任务。
CountDownTimer只能实现,不可延迟,并且有执行完成的回调方法。

原创粉丝点击