1. 程式人生 > >Android中幾種常用的定時器和延時方法

Android中幾種常用的定時器和延時方法

通過實際專案的練習,掌握了幾種android基本定時器和延時的用法,這裡我想總結一下作為自己的收穫,下面列出的是比較簡潔的模式,方便簡單地在程式中直接呼叫。
一、三種常用的定時器
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();

以上部分,都是實際專案中使用過的,同時這也是第一次寫部落格,如果有錯誤的地方,請大神們指正。準備寫部落格,是想把這塊知識進行總結,同時也能加深自己對這部分的理解,希望以後能有更多的內容同大家分享。