Andramid

The pyramid of Android. 一起攀登这座 Android 的金字塔。

Activity 任务、亲和关系与启动模式

Activity 与任务 任务(Task) 是一系列 Activity 的集合,本质上是一个管理多个 Activity 的堆栈。 当前 Activity 启动另一个 Activity 时,新的 Activity 将被推送到堆栈顶部;按返回按钮时,当前 Activity 又会从堆栈顶部退出(销毁),堆栈按照“后进先出”的对象结构运作。 当堆栈中所有的 Activity 都被移除后,该任...

View 触摸事件的分发

触摸事件 MotionEvent 常见的触摸事件 Android View 系统中,通过 MotionEvent 类来表示在屏幕上的触摸事件。常见的触摸事件有以下几种: 事件 说明 ACTION_DOWN 表示一个按下手势的开始,发生在刚触碰到屏幕时 ACTIO...

Input 系统触摸事件分发原理

当用户在 Android 系统设备上触摸屏幕或者按键操作时,会先触发硬件驱动,硬件驱动受到事件后,会将相应事件写入到设备节点(/dev/input/ 目录下),这便产生了最原生态的内核事件。比如我的测试设备有以下一些设备节点: OnePlus5T:/ $ ls /dev/input/ ...

View 的软件绘制与硬件加速绘制

View 的绘制 承接上文 View 的测量与布局,在整个 View 树完成测量和布局的流程之后,接着执行的是最后一步:绘制渲染 draw 过程。整体流程是: measure -> layout -> draw。 发起点同样是 ViewRootImpl,整体的时序图示意如下: 由于 View 的渲染绘制过程涉及到硬件层面,整体的流程更为之复杂。 硬件加速绘制和软件绘制 V...

View 的测量与布局

View 的测量与布局 View 树的构建 Android 系统包括应用内的 UI 界面都是可以划分为一个个的 View 视图,View 是一个树形结构,多层级的 View 树示例如下: 其中,需要注意的是,包含子 View 的父 View 必然是 ViewGroup 的实现类,其实现了 ViewParent 接口。 而顶层的 ViewRooltImpl 由系列文章(二)可知,其并非...

Window 的添加过程

Window 的添加过程 Andorid 系统中,各个大大小小的 Window 都是由系统服务 WindowManagerService 来统一管理的,其中实现了包括窗口的添加、更新、删除等一系列操作。 关于系统服务的概念,可跳转至 Android 系统服务概念理解 基本使用 Window 的实际视图是一个 View,新建一个 View 之后通过 WindowManager 便...

Android 系统 Window 概念理解

Android 系统 Window 概念理解 Window 是整个 Android View 系统中最基本、核心的概念。本文旨在概括性地介绍 Window 中的一些重要概念,以方便后续对 Window 相关操作的深入学习。 如果理解 Window 在 Android 系统中,任何可视化的界面,都是以 Window 的概念而存在。包括我们日常开发中最常接触到的 Activity、弹窗 Dia...

深入了解系统 Services 机制

什么是系统 Services? 从 Android 应用的角度来说,系统启动之后,会在一个名为 system_server 的进程中启动一系列的 Services,以向每个进程应用(Application Process)提供各式各样的“服务”,每个 Service 各思其职。比如,大家最熟悉的 Activity 以及其他组件,其生命周期则是由 ActivityManagerService ...