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

相关文章
相关标签/搜索