
framework
文章平均质量分 86
Android Framework相关技术梳理
little_fat_sheep
图形学领域爱好者,未来将在图形渲染(OpenGL、LibGDX、Filament、Unity3D、UE)、图形编解码(FFmpeg)等领域长期深耕。
展开
-
【framework】surfaceflinger启动流程
1 前言surfaceflinger 的作用是合成来自 WMS 的 Surface 数据,并发送到显示设备。2(1)main/system/core/init/main.cppint main(int argc, char** argv) {... if (argc > 1) { ... if (!strcmp(argv[1], "second_stage")) { return SecondStageMain(argc, .原创 2021-03-18 01:42:56 · 2139 阅读 · 0 评论 -
【framework】InputChannel创建流程
IMS启动流程中介绍了 IMS 在 Java 层和 Native 层的初始化流程,以及创建 NativeInputManager、InputManager、InputReader、InputDispatcher、EventHub 等对象过程;View添加过程中介绍了从 WindowManagerImpl 的 addView() 方法到 WindowState、SurfaceSession 的创建流程;本文将介绍InputChannel 在 Java 层和 Native 层的初始化流程。InputC原创 2021-01-27 02:03:09 · 937 阅读 · 2 评论 -
【framework】IMS启动流程
1 前言IMS 是 InputManagerService 的简称,主要负责输入事件管理。1.1 基本概念输入设备:屏幕、电源/音量、键鼠、充电口、蓝牙、wifi 等设备节点:当输入设备可用时,Linux 内核会在 /dev/input 中创建对应的设备节点输入事件:触摸事件、按键事件、鼠标事件、插拔事件等输入子系统:负责采集 Linux 内核中输入事件原始信息,原始信息由 Kernel space 的驱动层一直传递到 User space 的设备节点IMS 所做的工作就是监听 /dev/i原创 2021-01-17 01:37:40 · 2730 阅读 · 5 评论 -
【framework】Surface创建流程
View添加过程中介绍了从 WindowManagerImpl 的 addView() 方法到 WindowState、SurfaceSession 的创建流程,本文将介绍 Surface 的创建流程。应用进程中,ViewRootImpl 持有 Surface 对象,system_server 进程中,WindowSurfaceController 持有 SurfaceControl 对象,Surface 和SurfaceControl 都持有 native 层的同一个 Surface 对象的地址(Su原创 2021-01-11 02:01:57 · 1257 阅读 · 3 评论 -
【framework】应用进程启动流程
Activity启动流程中介绍了从点击桌面上应用快捷方式到 Activity 的 onCreate() 方法调用流程,本将介绍应用进程的启动流程。由于应用进程启动流程复杂,本文按进程将其拆分为3个部分展开介绍:system_server 进程:介绍从 AMS.LocalService(startProcess方法)到 ZygoteState(connect 方法)的调用流程;zygote 进程:介绍从 ZygoteInit(main方法)到 ActivityThread(main方法)的调用流程;原创 2020-12-31 01:27:11 · 1868 阅读 · 0 评论 -
【framework】Activity启动流程
由于 Activity 启动流程复杂,本文按进程将其拆分为3个部分展开介绍:Launcher 进程:介绍从 Launcher(startActivitySafely 方法)到 ATMS(startActivity 方法)的调用流程;system_server 进程:介绍从 ATMS(startActivity 方法)到 ApplicationThread(scheduleTransaction 方法)的调用流程;应用进程:介绍从 ApplicationThread(scheduleTransacti原创 2020-12-21 01:30:33 · 866 阅读 · 1 评论 -
【framework】AMS启动流程
1 前言AMS 即 ActivityManagerService,负责 Activy、Service、Broadcast、ContentProvider 四大组件的生命周期管理。本文主要介绍 AMS 的启动流程和初始化过程。AMS 在初始化的过程中,也伴随着了ATMS(ActivityTaskManagerService)的初始化。AMS 创建流程简述:SystemServer:依次调用 main()、run()、startBootstrapServices(),再调用 Lifecyle 的原创 2020-12-20 18:25:33 · 939 阅读 · 1 评论 -
【framework】ATMS启动流程
ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务、堆栈、显示等)。ATMS 在 Android 10 中才出现,由原来的 AMS(ActivityManagerService)分离而来,承担了 AMS 的部分职责。因此,在 AMS初始化过程中(AMS启动流程),也伴随着了 ATMS 的初始化。本文主要介绍 ATMS 的启动流程和初始化过程。原创 2020-12-20 02:02:40 · 1953 阅读 · 1 评论 -
【framework】View添加过程
WMS启动流程中介绍了 WindowManagerService 的启动流程,本文将介绍 View 的添加流程,按照进程分为以下2步:应用进程:介绍从 WindowManagerImpl(addView 方法)到 Session(addToDisplay 方法)的调用流程;system_server 进程:介绍从 Session(addToDisplay 方法)到 SurfaceSession(构造方法)的调用流程;为区分不同进程,将应用进程、system_server 进程分别标识为浅蓝色、深蓝原创 2020-12-14 01:20:37 · 797 阅读 · 0 评论 -
【framework】WMS启动流程
1 前言WindowManagerService 简称 WMS,主要有如下职责:窗口管理:负责启动、添加、删除窗口,管理窗口大小、层级,核心成员有:WindowContainer、RootWindowContainer、DisplayContent、TaskStack、Task、AppWindowToken、WindowState; 窗口动画:由其子系统 WindowAnimator 管理; 输入系统中转站:通过对窗口的触摸从而产生触摸事件,由 InputMethodService(IMS)对触原创 2020-12-13 15:46:19 · 934 阅读 · 0 评论 -
【framework】Task简介
1 前言Task即任务,一个 Task 对应一个 Activity,其父容器为TaskStack,子容器为AppWindowToken。关于其父类及祖父类的介绍,见 →WindowContainer简介、ConfigurationContainer简介。2 源码源码地址→/frameworks/base/services/core/java/com/android/server/wm/Task.java(1)类定义//AppWindowToken 为子节点类型clas...原创 2020-12-11 00:53:54 · 978 阅读 · 0 评论 -
【framework】TaskStack简介
1 前言TaskStack 用于管理 app,一般一个应用程序对应一个 TaskStack,其父容器为TaskStackContainers(DisplayContent 的子容器),子容器为Task。关于其父类及祖父类的介绍,见 →WindowContainer简介、ConfigurationContainer简介。2 源码(1)类定义public class TaskStack extends WindowContainer<Task> implements...原创 2020-12-09 01:51:09 · 1513 阅读 · 0 评论 -
【framework】DisplayContent简介
1 前言DisplayContent 用于管理屏幕,一块屏幕对应一个 DisplayContent 对象,虽然手机只有一个显示屏,但是可以创建多个 DisplayContent 对象,如投屏时,可以创建一个虚拟的 DisplayContent。关于其父类及祖父类的介绍,见→WindowContainer简介、ConfigurationContainer简介,其父容器的介绍见→RootWindowContainer简介。2 源码(1)类定义//DisplayChildWindowC.原创 2020-12-07 01:42:11 · 4325 阅读 · 0 评论 -
【framework】RootWindowContainer简介
1 前言RootWindowContainer 是窗口容器的根容器,子容器是 DisplayContent。关于其父类及祖父类的介绍,见→WindowContainer简介、ConfigurationContainer简介。2 源码原创 2020-12-05 01:13:55 · 5122 阅读 · 4 评论 -
【framework】WindowContainer简介
1 前言WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。ConfigurationContainer简介中,已介绍 ConfigurationContainer。本文主要介绍WindowContainer、Animatable、WindowContainerController、SurfaceControl、Transaction、SurfaceAnimator。2 源码2.1Animatable、SurfaceAn...原创 2020-11-30 01:07:13 · 3959 阅读 · 0 评论 -
【framework】ConfigurationContainer简介
1 前言如图所示,ConfigurationContainer 是 AMS 家族的重要基类;WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。本文主要介绍ConfigurationContainer、Configuration、WindowConfiguration、ConfigurationContainerListener。2ConfigurationContainerConfigurationContainer 是..原创 2020-11-29 23:43:14 · 2694 阅读 · 1 评论