在Activity內使用定時器

在activity內不能夠直接使用定時器,由於定時器開闢了新的線程,而activity是主線程,兩個線程進行通訊因此用到handler
 Handler工具類在多線程中有兩方面的應用:android

  一、發送消息,在不一樣的線程間發送消息,使用的方法爲sendXXX();。多線程

  android.os.Handler對象經過下面的方法發送消息的:
  sendEmptyMessage(int),發送一個空的消息;
  sendMessage(Message),發送消息,消息中能夠攜帶參數;
  sendMessageAtTime(Message, long),將來某一時間點發送消息;
  sendMessageDelayed(Message, long),延時Nms發送消息。ide

       二、計劃任務,在將來執行某任務,使用的方法爲postXXX();。工具

  android.os.Handler對象經過下面的方法執行計劃任務:
  post(Runnable),提交計劃任務立刻執行;
  postAtTime(Runnable, long),提交計劃任務在將來的時間點執行;
  postDelayed(Runnable, long),提交計劃任務延時Nms執行。post

首先要定義handler
final Handler handler = new Handler() {線程

     @Override
     public void handleMessage(Message msg) {
      super.handleMessage(msg);
      // handler處理消息
      if (msg.what == 0) {
       if(myService.flag==0.0){
        //此處能夠對activity組件進行操做
       }else{
        //此處能夠對activity組件進行操做
       }對象

      }
     }
    };
定義定時器:
timer = new Timer();get

    // 定義計劃任務,根據參數的不一樣能夠完成如下種類的工做:在固定時間執行某任務,在固定時間開始重複執行某任務,重複時間間隔可控,在延遲多久後執行某任務,在延遲多久後重復執行某任務,重複時間間隔可控
    timer.schedule(new TimerTask() {     
     @Override
     public void run() {it

      Log.i("yao", Thread.currentThread().getName());定時器

      // 定義一個消息傳過去
      Message msg = new Message();
      msg.what = 0;
      handler.sendMessage(msg);
     }

    }, 1000, 1000);

相關文章
相關標籤/搜索