Android Thread 与 Handler 的关系


1、Handler 与 Thread 的桥梁是 Looper;
2、在 Thread 中,通过 Looper.prepare() 方法,新建一个 looper 对象,从而将 Looper 与 Thread 绑定了起来
3、在 Handler 构造函数中,存在下面这段代码:

  mLooper = Looper.myLooper();

    ...

  // 从而获取到当前 Thread 的 Looper
  public static final Looper myLooper(){
    return (Looper)sThreadLocal.get();
  }

4、在一个 Thread 中,可以存在多个 Handler,Message 由哪个 Handler 发送,则由哪个 Handler 处理
5、handler 与哪个 Thread 共享 Looper,则 Mesage 里面的 回调函数 callback 则在哪个 Thread 中执行;

6、在非主线程中,创建 handler 之前一定要先创建该线程的 Looper,(通过 Looper.prepare() 方法); 并在最后调用 Looper.loop()   因为 Looper.loop() 是一个死循环,用于从 MessageQueue 中轮循并提取 Message 处理;

关于 HandlerThread


1、HandlerThread 是专门为 Handler 准备的,已经内置了一个 Looper,通过方法 getLooper() 既可获得;
2、Handler 通过 new Handler(handlerThread.getLooper()) 方法即可与该 HandlerThread 绑定;
3、启动 HandlerThread 需要调用 start() 方法;
4、该线程是新奇动的一个线程,不在主线程当中;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值