# Handler & AsyncTask

作者: 卡路fly | 来源:发表于2020-04-29 16:36 被阅读0次

Handler

Looper、Handler、MessageQueue、Message

工厂生产线:

  • Looper 发动机
  • MessageQueue 传送带
  • Message 商品
  • Handler 工人
小工厂

Handler与Thread线程如何关联

Looper属于某个线程,消息队列存贮在Looper,消息队列通过Looper与特定线程关联。Handler与Looper、MessageQueue关联,因此handler与Thread线程关联。

子线程如何创建Handler

子线程创建Looper,if looper为空,抛出异常,子线程没有调用Looper.prepare之前,该线程looper为空

new Thread() {
    Handler handler = null;
    public void run() {
        // 1. 创建Looper,并绑定到ThreadLocal
        Looper.prepare();
        handler = new Handler();
        // 2. 启动消息循环
        Looper.loop();
    }
}.starh();

AsyncTask

是Android封装好的Thread+Handler组合,基于异步消息处理机制,可以简单的从子线程切换主线程。

image.png image.png

图片来源


相关文章

网友评论

    本文标题:# Handler & AsyncTask

    本文链接:https://www.haomeiwen.com/subject/lbknwhtx.html