handler(一)

     handler的post方法直接调用线程对象的run方法,并没有开启新的进程,也就是说用这种方式调用的话,handler的线程和activity的线程是同一个。如果想使handler和activity运行在不同的线程中,解决办法是:

        HandlerThread handlerThread = new HandlerThread("handler_thread");  //先生成HandlerThread线程对象

        handlerThread.start(); // 调用线程的start方法开启线程,此时该线程就是一个新启动的线程,和activity的就不是同一个线程了

     此时要处理消息队列中的消息需要将Handler对象的handlerMessage方法绑定在handlerThread线程里,处理handler.getLooper()获取的消息

       MyHandler myHandler = new MyHandler(handlerThread.getLooper()); 
        Message msg = myHandler.obtainMessage();   //从消息队列中获取一个消息
        msg.sendToTarget();  //将msg发送到myHandler对象进行处理

//class  MyHandler

    class MyHandler extends Handler{
     public MyHandler()
     {
      
     }
     public MyHandler(Looper looper)
     {
      super(looper);
     }
  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   super.handleMessage(msg);
   System.out.println("handler "+Thread.currentThread().getId());
   System.out.println("handlerMessge");
  }
     
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值