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对象,消耗内存

最新文章

  1. 递推 hdu 2064
  2. Android细笔记--ContentProvider
  3. ypzl药品质量不合格数据库-excel自动排版
  4. 『TCP/IP详解——卷一:协议』读书笔记——14
  5. UVa 1593代码对齐
  6. Visual Studio Profiler 跟踪检查每个exe dll 性能 执行时间 CPU占用情况的方法
  7. oracle数据操纵语言(DML)data manipulation language(续集)
  8. Quartz.net官方开发指南系列篇
  9. 【原】Storm 消息处理保障机制
  10. UVa 10256 The Great Divide,推断两个凸包是否相离
  11. JGUI源码:Accordion折叠到侧边栏实现(6)
  12. padding填充属性
  13. 网络编程一定要看过的socket另一座大山
  14. pandas中的时间序列基础
  15. PHP实现日志处理类库 - 【微信开发之微电商网站】技术笔记之二
  16. 【Firefly API文档】—— Package DBentrust
  17. kalman 滤波 演示与opencv代码
  18. ObjectMapper对象的使用 Object2JSON
  19. 现代web开发需要学习的15大技术
  20. JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上。

热门文章

  1. C++ Core Guidelines
  2. Web API: Security: Authentication and Authority
  3. angular4 get,post请求(带参数,与不带参数)
  4. Java后台获取前端utf-8格式 空格,使用trim()消除不了的解决办法
  5. Linux基础之权限-你弄得明白吗?
  6. WCF REST 工作总结
  7. docker stack 部署 seafile(http)
  8. ActiveMQ:初见&安装试运行
  9. python基础--shutil模块
  10. Nginx - Header详解