Handler

作者: JianLee | 来源:发表于2018-04-09 02:01 被阅读8次

    一:什么是Handler
    1:在子线程做完耗时操作之后,可以通过sendMessage和发送Runnable来通知主线程更新UI。

    2:把耗时操作放在子线程,更新UI的操作放在主线程,然后通过Handler发送消息的机制来通知主线程更新UI。

    二:handler使用


    image.png

    三:handler内部机制原理


    image.png

    1:handler 发送一个message对象到 消息队列,looper(创建的同时,消息队列就绑定好了)对消息队列进行循环,获取到message发送到handler进行处理。

    2:handler 发送消息只能发送到它相关的线程

    3:在handler的构造方法,创建了looper,并且通过looper创建了messageQueue,所以handler已经和消息队列关联在了一起,并且消息队列是由looper来管理的。三者联系在了一起。

    4:heandler中通过ThreadLocal来保存looper,ThreadLocal.get可以让不同线程只能获取各自的looper,确保了每一个线程有单独唯一的looper。(在创建looper.prepare()的方法中创建了ThreadLocal)

    5:Looper.loop(),内部创建了一个死循环,然后从消息队列中,逐个去获取消息最后处理消息的过程。

    6:handler最后通过 dispatchMessage(Message msg) 方法拿到looper.loop()分发给的message,由对呀的handler的handleMessage方法进行处理。

    四:Handler内存泄漏


    image.png

    相关文章

      网友评论

          本文标题:Handler

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