
Activity源码简要分析总结
发布日期:2021-05-09 05:17:08
浏览次数:14
分类:博客文章
本文共 746 字,大约阅读时间需要 2 分钟。
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》 邓凡平 著
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月26日 08时16分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
js求阶乘
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
Typescript 学习笔记六:接口
2021-05-08
MySQL-时区导致的时间前后端不一致
2021-05-08
sctf_2019_easy_heap
2021-05-09
bcolz的新操作
2021-05-09
delete对象时会自动调用类的析构函数
2021-05-09