阿里技术协会好文推荐:Android绘制流程

1、前言

1.一、C++界面库

  MFC、WTL、DuiLib、QT、Skia、OpenGL。
Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的。socket

1.二、Android基本概念

  • 窗口ui

      对用户来讲, 窗口就是手机屏幕, 包括下面的那些home、back按键、状态栏等。对于Activity来讲, 窗口就是除系统状态栏和系统按键的屏幕区域, 有window之类的概念。对于wms来讲, 它没有什么窗口的概念, 它能接受的只是一个个view而已。也就是Activity这里还有Window这个概念, 但在wms那里, 已经没有window的概念了。
    窗口类型分为应用程序窗口: 就是通常应用程序的窗口, 好比咱们应用程序的Activity的窗口。子窗口: 通常在Activity里面的窗口, 好比TabActivity。系统窗口: 系统的窗口, 好比输入法、Toast、墙纸等等…系统窗口不须要对应任何Activity, 也不须要有父窗口, 对于应用程序而言, 理论上是没法建立系统窗口的, 由于全部的应用程序都没有这个权限, 然而系统进程却能够建立系统窗口。WindowManager.LayoutParams里面有关于各类窗口的type类型定义, type还有个含义就是窗口的z-order, 值越大, 显示的位置越在上面。spa

  • Window、PhoneWindow代理

      顶层窗口样式和行为的抽象类, 归纳了Android窗口的基本属性和基本功能。该类实例的getDecorView()方法返回的DecorView被用来做为顶层视图添加到WM中。
    建立时机: ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivity --->Activity.attachorm

  • WindowManager、WindowManagerImpl、WindowManagerGlobal对象

      与一个特定的Display相关联, WindowManager主要用来管理窗口的一些状态、属性、view增长、删除、更新、窗口顺序、消息收集和处理等。它面向的对象一端是屏幕, 另外一端就是 view , 直接忽略咱们之前的 Activity 或者 Dialog 之类的东东。WindowManager是一个接口类, 其真正的实现是WindowManagerImpl, 后者同时也是整个应用程序中全部Window的管理者。接口

  • Activity进程

      Activity是支持显示UI的, 但不直接管理view树或者ViewRoot, Activity并无与这二者产生直接的联系, 是经过中间 “Window”的对象。
    建立过程: 1>、 使用代理模式启动到ActivityManagerService中执行;
    2>、 建立ActivityRecord到mHistory记录中;
    3>、 经过socket通讯到Zgote相关类建立process;
    4>、经过ApplicatonThread与ActivityManagerService创建通讯;
    5>、ActivityManagerService通知ActiveThread启动Activity的建立;
    6>、ActivityThread建立Activity加入到mActivities中并开始调度Activity执行;
    7>、ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivityget

    阅读全文请点击:http://click.aliyun.com/m/8719/it

相关文章
相关标签/搜索