美文网首页
Android常用的定时器

Android常用的定时器

作者: 残非 | 来源:发表于2019-10-14 11:10 被阅读0次

一、三种常用的定时器

1.Handler类的postDelayed方法:

 Handler mHandler = new Handler(); 
         Runnable r = new Runnable() {
                  @Override
                  public void run() {
                          //do something
                        //每隔1s循环执行run方法
                          mHandler.postDelayed(this, 1000);
                  }              
      };
 主线程中调用:  mHandler.postDelayed(r, 100);//延时100毫秒

2.用handler+timer+timeTask方法:

     Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
        if (msg.what == 1){
              //do something
          }
          super.handleMessage(msg);
          }
     };
 
     Timer timer = new Timer();
     TimerTask timerTask = new TimerTask() {
         @Override
         public void run() {
             Message message = new Message();
             message.what = 1;
             handler.sendMessage(message);
         }
     };
  主线程中调用:timer.schedule(timerTask,1000,500);//延时1s,每隔500毫秒执行一次run方法

3.Thread+handler方法:

 Handler handler = new Handler() {
      @Override
      public void handleMessage(Message msg) {
          if (msg.what == 1){
              //do something
          }
          super.handleMessage(msg);

      }
 };

class MyThread extends Thread {//这里也可用Runnable接口实现
     @Override
     public void run() {
         while (true){
             try {
                 Thread.sleep(1000);//每隔1s执行一次
                 Message msg = new Message();
                 msg.what = 1;
                 handler.sendMessage(msg);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }

         }
     }
 }
 主线程中调用:new Thread(new MyThread()).start();

二,三种延时的快捷方法

1.Handler的postDelayed方法:

new Handler().postDelayed(new Runnable() {

     @Override
     public void run() {
           //do something
       }
    }, 1000);    //延时1s执行

2.timer + TimerTask方法

 timer = new Timer();
              timer.schedule(new TimerTask() {                   
                 @Override
                 public void run() {
                       //do something
                 }
             },1000);//延时1s执行

3.Thread方法:

  new Thread(new MyThread()).start();
      new Thread(new Runnable() {
          @Override
          public void run() {
              try {
                  Thread.sleep(1000);//延时1s
                  //do something
              } catch (InterruptedException e) {
                  e.printStackTrace();
             }
         }
     }).start();

转载自:https://www.cnblogs.com/dame/p/8085983.html

相关文章

网友评论

      本文标题:Android常用的定时器

      本文链接:https://www.haomeiwen.com/subject/dwalmctx.html