美文网首页
View体系4:ViewRoot的工作方式

View体系4:ViewRoot的工作方式

作者: 81bad73e9053 | 来源:发表于2016-12-05 21:12 被阅读36次

    ViewRoot的基本工作方式

    每棵ViewTree对应一个ViewRoot,它会和WMS进行一系列的通信,包括窗口注册,大小调整等,那么,什么情况下ViewRoot会执行这些操作呢

    • ViewTree内部有请求
      如某个View对象需要更新UI时会通过invalidate或者其他方式发起请求,随后这些请求会沿着ViewTree层层上传,最终到达ViewRoot,这个ViewTree的管理者再根据一系列情况采取相应措施
    • 外部的状态更新
      ViewRoot接收来自外部的请求,如WMS会回调ViewRoot通知界面大小改变,触摸事件,按键事件等;

    不论内部请求还是外部请求,通常情况下ViewRoot并不会直接处理他们,而是把消息入队后依次处理,ViewRoot内部定义了ViewRootHandler类来对这些消息进行统一处理,而且这个Handler实际是和主线程MessageQueue挂钩的,这也就验证了ViewRoot相关操作是在主线程运行,正因如此,在ViewRootHandler中执行的事件处理不要有耗时操作,否则很可能阻塞线程造成ANR##

    TU 11-9 ViewRoot的一般工作流程图

    相关文章

      网友评论

          本文标题:View体系4:ViewRoot的工作方式

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