• <meter id="tmgru"></meter>

    <dl id="tmgru"></dl>
      1. <dl id="tmgru"><legend id="tmgru"></legend></dl>
        1. <code id="tmgru"></code>

          <var id="tmgru"><u id="tmgru"></u></var>

          <dl id="tmgru"><legend id="tmgru"></legend></dl>
          計算機學習網-【computerpx】

          招生咨詢電話與微信:15225191462(周老師)
          計算機學習網,學牛IT技術

          首頁 > 計算機知識/ 正文

          Android中定時器的3種實現方法

          2015-12-02 16:21:53 www.pb939.com

           在Android開發中,定時器一般有以下3種實現方法:


          一、采用Handler與線程的sleep(long)方法
          二、采用Handler的postDelayed(Runnable, long)方法
          三、采用Handler與timer及TimerTask結合的方法
          下面逐一介紹:

          一、采用Handle與線程的sleep(long)方法
          Handler主要用來處理接受到的消息。這只是最主要的方法,當然Handler里還有其他的方法供實現,有興趣的可以去查API,這里不過多解釋。

          1. 定義一個Handler類,用于處理接受到的Message。
          Handler handler = new Handler() {
              public void handleMessage(Message msg) {
                  // 要做的事情
                  super.handleMessage(msg);
              }
          };


          2. 新建一個實現Runnable接口的線程類,如下:
          public class MyThread implements Runnable {
                  @Override
                  public void run() {
                          // TODO Auto-generated method stub
                          while (true) {
                                  try {
                                          Thread.sleep(10000);// 線程暫停10秒,單位毫秒
                                          Message message = new Message();
                                          message.what = 1;
                                          handler.sendMessage(message);// 發送消息
                                  } catch (InterruptedException e) {
                                          // TODO Auto-generated catch block
                                          e.printStackTrace();
                                  }
                          }
                  }
          }


          3. 在需要啟動線程的地方加入下面語句:
          new Thread(new MyThread()).start();


          4. 啟動線程后,線程每10s發送一次消息。

          二、采用Handler的postDelayed(Runnable, long)方法

          這個實現比較簡單一些。
          1. 定義一個Handler類
          Handler handler=new Handler();
          Runnable runnable=new Runnable() {
              @Override
              public void run() {
                  // TODO Auto-generated method stub
                  //要做的事情
                  handler.postDelayed(this, 2000);
              }
          };


          2. 啟動計時器
          handler.postDelayed(runnable, 2000);//每兩秒執行一次runnable.

          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 Auto-generated method stub 
                  // 要做的事情 
                  super.handleMessage(msg); 
              }
          };

          2. 初始化計時器任務
          task = new TimerTask() { 
              @Override 
              public void run() { 
                  // TODO Auto-generated method stub 
                  Message message = new Message(); 
                  message.what = 1; 
                  handler.sendMessage(message); 
              } 
          };


          3. 啟動定時器
          timer.schedule(task, 2000, 2000);


          簡要說一下上面三步提到的一些內容:

          1. 定時器任務(TimerTask)顧名思義,就是說當定時器到達指定的時間時要做的工作,這里是想Handler發送一個消息,由Handler類進行處理。
          2. java.util.Timer.schedule(TimerTask task, long delay):這個方法是說,dalay/1000秒后執行task.只執行一次。
          java.util.Timer.schedule(TimerTask task, long delay, long period):這個方法是說,delay/1000秒后執行task,然后進過period/1000秒再次執行task,這個用于循環任務,執行無數次,當然,你可以用timer.cancel();取消計時器的執行。
           

          Tags:鄭州三加二學校哪些還在招生,鄭州無基礎學編程學校哪家好,鄭州電腦設計培訓學校哪家好,河南計算機中專學校有哪些,河南技校電腦編程的學校有哪些,鄭州職業技術學院有什么專業

          搜索
          計算機培訓學校,就來計算機學習網咨詢
          計算機培訓學校,就來計算機學習網咨詢
          熱門標簽
          計算機培訓學校,就來計算機學習網咨詢
          計算機培訓學校,就來計算機學習網咨詢
          計算機培訓學校,就來計算機學習網咨詢
          • QQ交談
          开心五月色播