在Activity和Service之外使用handler

     最近对Handler有了一个新的认识,以前对于handler的使用大多是在Activity和service中,用着还挺舒服挺好的。但是最近写一个业务实现类的时候,发现使用handler会报错,百思不得其解,使用方式和以前是一样的。后来经过高人指点,原来,activity和service本身是有生命周期的,handler可以随着他们的生命周期开始和靠岸。对于普通的java类,本身是无生命周期的,因此按照以前handler的使用方式,是行不通的。但是在这个业务实现类里面,我必须使用handler,那么怎么办呢?后来看了framework层的代码,发现了一种很巧妙的方法。

       1.声明一个HandlerThread,代码如下:

     private HandlerThread ht;
       2.在构造方法中实例化并且启动这个线程,代码如下:

     public MyTest() {
		ht = new HandlerT("MyTest");
		ht.start();
	}
        HandlerThread中的参数没有特别的规定,只要是一个字符串就可以了。

      3.自定义一个hander,代码如下:

    public class MyHandler extends Handler {
		public MyHandler(Looper looper) {
			super(looper);
                @Override
		public void handleMessage(Message msg) {
                   }
		}
      4.实例化handler,代码如下:

   MyHandler mMyHandler = new MyHandler(ht.getLooper());

     

      MyHandler通过HandlerThread获取了一个Looper,其他使用方式,和在Activity和Service中是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值