在Activity内使用定时器

本文深入探讨了在Android应用开发中如何利用Handler工具类实现消息传递和计划任务,以及如何使用Timer来定时执行操作,包括发送消息、执行计划任务等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在activity内不可以直接使用定时器,因为定时器开辟了新的线程,而activity是主线程,两个线程进行通信所以用到handler
 Handler工具类在多线程中有两方面的应用:

  1、发送消息,在不同的线程间发送消息,使用的方法为sendXXX();。

  android.os.Handler对象通过下面的方法发送消息的:
  sendEmptyMessage(int),发送一个空的消息;
  sendMessage(Message),发送消息,消息中可以携带参数;
  sendMessageAtTime(Message, long),未来某一时间点发送消息;
  sendMessageDelayed(Message, long),延时Nms发送消息。

       2、计划任务,在未来执行某任务,使用的方法为postXXX();。

  android.os.Handler对象通过下面的方法执行计划任务:
  post(Runnable),提交计划任务马上执行;
  postAtTime(Runnable, long),提交计划任务在未来的时间点执行;
  postDelayed(Runnable, long),提交计划任务延时Nms执行。

首先要定义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();

    // 定义计划任务,根据参数的不同可以完成以下种类的工作:在固定时间执行某任务,在固定时间开始重复执行某任务,重复时间间隔可控,在延迟多久后执行某任务,在延迟多久后重复执行某任务,重复时间间隔可控
    timer.schedule(new TimerTask() {     
     @Override
     public void run() {

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

      // 定义一个消息传过去
      Message msg = new Message();
      msg.what = 0;
      handler.sendMessage(msg);
     }

    }, 1000, 1000);

转载于:https://my.oschina.net/wrs/blog/270894

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值