• Handler&Looper


    1

    Looper和Handler

    Looper用于封装消息循环,并持有一个消息队列

    Handler封装消息投递,消息处理等接口

    looper.prepare

    1、prepare会调用线程的局部变量中设置一个Looper对象,这个调用线程就是LooperThread的run线程

    looper构造方法

    2、loop循环

     looper的作用

    a、封装了一个消息队列

    b、prepare函数把Looper和调用prepare的线程绑定在一起

    c、处理线程调用loop函数,处理来自该消息队列的消息

    当事件源向Looper发消息时,其实是把消息加到Looper的消息队列里面,该消息由和Looper绑定的线程处理

    Looper中有一个message队列,用来存储一个个待处理的message

    message中有一个Handler,用来处理message

    Handler

     

     handler -> sendMessage --->实际是调用sendMessageDelayed(msg,0)

     以当前时间为基础+延时时间,执行sendMessageAtTime

    handler将自己设置为msg的target

    Handler的消息处理:dispatchMessage

    dispatchMessage定义了消息处理的优先级机制

    a、message如果自带了callback,则交给callback处理 

    b、handler设置了全局的callback,交给callback处理

    c、如果a,b都没有,则交给handler子类实现的handleMessage来处理,一般我们是使用的handleMessage来处理

    Handler和Looper的同步

     

     

  • 相关阅读:
    flink系列(一)flink部署及架构简介
    详解GaussDB(DWS) 资源监控
    mybatis中的if-else语句!!!
    开店三大分享:咖啡店装修风格怎么确定?门店氛围如何打造?
    ceph 原理
    11.Ansible.roles角色
    数据分析及治理工程师
    面向6G网络的水下光通信系统
    【Linux学习笔记】字符串切分
    vue2使用wangEditor
  • 原文地址:https://blog.csdn.net/somethingstill/article/details/106824660