zoukankan      html  css  js  c++  java
  • 《Android源码设计模式》--Builder模式

    No1:

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    No2:

    在Android源码中,最常用到的Builder模式就是AlertDialog.Builder

    No3:

    WindowManager在java层的具体实现是WindowManagerImpl,Window对象的setWindowManager函数将Window对象与WindowManager建立了联系

    添加View、移除View、更新View的布局等具体的工作都交给了WindowManagerGlobal这个类

    WindowManager的addView方法实际上调用的是WindowManagerGlobal中的addView方法

    调用ViewRootImpl的setView方法将View显示到手机窗口中

    No4:

    ViewRootImpl继承自Handler类,是作为native层与Java层View系统通信的桥梁

    No5:

    Android Framework与WindowManagerService之间也是通过Binder机制进行通信

    No6:

    WindowManagerService管理的并不是Window,而是View,只不过它管理的是属于某个Window下的View

    No7:

    在draw()函数中会获取到需要绘制的区域,以及判断是否使用GPU进行绘制。通常情况下使用的是CPU绘制,也就是调用的是drawSoftware函数来绘制。

    No8:

    视图树绘制步骤

    1)判断是使用CPU绘制还是GPU绘制

    2)获取绘制表面Surface对象

    3)通过Surface对象获取并且锁住Canvas绘图对象

    4)从DecorView开始发起整棵树的绘制流程

    5)Surface对象解锁Canvas,并且通知SurfaceFlinger更新视图

    No9:

    WindowManagerService系统

    No10:

    优点

    1)良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节

    2)建造者独立,容易扩展

    缺点:会产生多余的Builder对象以及Director对象,消耗内存

  • 相关阅读:
    强连通分量
    mysql安装图解 mysql图文安装教程(详细说明)
    MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found
    socket网络编程之一:客户端和服务器端接口函数
    unity3D——登录界面
    Ionic学习注意事项01
    这里我将分享我学到的几种ionic登陆界面
    关于ionic基础教程的学习网址
    Windows下配置Git
    Cocos网络篇[3.2](3) ——Socket连接(1)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7755445.html
Copyright © 2011-2022 走看看