Activity源码简要分析总结

  摘自参考书籍,只列一下结论:

  1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的View只不过是这个DecorView中的一部分。

  DecorView是一个FrameLayout。

  2. Activity和UI 有关,它包含一个Window(真实类型是PhoneWindow)和一个WindowManager(真实类型是LocalWindowManager)对象。这两个对象将控制整个Activity的显示。

  3. LocalWindowManager使用了WindowManagerImpl作为最终的处理对象(Proxy模式),这个WindowManagerImpl中有一个ViewRoot对象。

  4. ViewRoot实现了ViewParent接口,它有两个重要的成员变量,一个是mView,它指向Activity顶层UI单元的DecorView,另外一个是mSurface,这个Surface包含了一个Canvas(画布)。

  除此之外,ViewRoot还通过Binder系统和WindowManagerService进行了跨进程交互

  5.ViewRoot能处理Handler的消息,Activity的显示就是由ViewRoot在它的performTraversals()方法中完成的。

  6. 整个Activity的绘图流程就是从mSurface中lock()一块Canvas,然后交给mView去绘制,最后unlockCanvasAndPost()释放这块Canvas。

参考资料

  《深入理解Android 卷I》 邓凡平 著

最新文章

  1. coreseek+sphinx+mysql+thinkphp整合
  2. Python 一些总结和比较
  3. 使django与数据库保持长连接
  4. ADS(一)
  5. Codeforces Round #327 (Div. 2)
  6. 【调试】路由器设置不了静态IP -- clwu
  7. Redis 集合(Set)
  8. pl/sql插入报错
  9. 【转】/etc/grub.conf文件详解
  10. 关于asp.net会话阻塞
  11. jackson - 生成jason工具-简单示例
  12. Python文件复制(txt文件)
  13. Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core
  14. sql 常见错误总结
  15. makefile编译错误情况整理
  16. jquery单击事件的写法
  17. tkinter面板切换
  18. Linux的JDK配置
  19. 【机器学习算法】AdaBoost自适应提升算法
  20. 【洛谷】【lca+结论】P3398 仓鼠找sugar

热门文章

  1. Javascript的实例化与继承:请停止使用new关键字
  2. python一
  3. C#中enum类型
  4. C# 根据自定义线程定时器 生成随机订单
  5. elasticsearch 查询(match和term)
  6. 拓扑排序 --- hdu 4948 : Kingdom
  7. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查
  8. 从钉钉微应用定制化导航栏看如何实现Hydrid App开发框架
  9. 泛函编程(36)-泛函Stream IO:IO数据源-IO Source & Sink
  10. 怎样学习Scala泛函编程