1. 程式人生 > >Android計時器

Android計時器

可用 rup delayed ble clas 接口 void sched xtend

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();

  

Android計時器