zoukankan      html  css  js  c++  java
  • Activity源码简要分析总结

     

    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》 邓凡平 著

  • 相关阅读:
    toLowerCase和toLocaleLowerCase的区别
    {JavaScript}栈和堆内存,作用域
    JS中的toString()和valueOf()方法
    ascii码与unicode码的区别
    js 中//<![CDATA[ 意义
    事件DOMContentLoaded和load的区别
    语义化版本
    Comet:基于 HTTP 长连接的“服务器推”技术
    [bzoj1063][Noi2008]道路设计
    [bzoj4310]跳蚤
  • 原文地址:https://www.cnblogs.com/mengdd/p/3386600.html
Copyright © 2011-2022 走看看