![](https://img-blog.csdnimg.cn/20191107164827783.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android源码分析
文章平均质量分 96
xyTianZhao
当你的能力驾驭不了你的野心时,那么你该学习了、、、
展开
-
Android 输入系统详解
Android 输入系统的工作原理概括来说,内核将原始事件写入到设备节点中,InputReader 不断地通过 EventHub 将原始事件取出来并翻译加工成 Android 输入事件,然后交给 InputDispatcher。InputDispatcher 根据 WMS 提供的窗口信息将事件交给合适的窗口。窗口的 ViewRootImpl 对象再沿着控件树将事件派发给感兴趣的控件。控件对其收到的事件作出响应,更新自己的画面、执行特定的动作。原创 2023-05-06 18:15:35 · 749 阅读 · 0 评论 -
Android 图形系统详解
一个页面(Activity)显示到屏幕上流程分析:启动 Activity → 创建 Window → WMS 注册 Window → SurfaceFlinger 创建 Surface → 合成 layer → 显示主要涉及三个进程:App进程、System_server进程、SurfaceFlinger进程原创 2023-02-08 21:04:46 · 4229 阅读 · 0 评论 -
View 自定义属性之 LayoutInflater
View 自定义属性之 LayoutInflater平常开发中,我们避免不了会自定义 view,自定义 view 的时候可以通过 AttributeSet 来获取自定义的相关属性。而怎么样不通过自定义 view,就能实现自定义相关属性呢,那就要使用自定义的 LayoutInflater 了。原生 LayoutInflater 使用我们先看看原生的 LayoutInflater 是怎么使用的。...原创 2020-02-28 18:13:35 · 478 阅读 · 0 评论 -
Android 动画使用及源码分析
Android 动画使用及源码分析Android 动画有如下三类,逐帧动画已经很少使用了,这里就不在说了,这里主要看一下 补间动画 和 属性动画 的加载和渲染逐帧动画补间动画属性动画补间动画补间动画分为如下四类动画属性相关类淡入淡出AlphaAnimation位移TranslateAnimation缩放ScaleAnimation旋转...原创 2019-10-11 14:07:54 · 473 阅读 · 0 评论 -
Handler 详解
开发中我们经常使用 Handler 来进行线程间的通信。这篇我们就从源码角度来分析一下 Handler 是怎么工作的。原创 2019-11-05 15:19:25 · 505 阅读 · 0 评论 -
Launch 桌面启动详解
Launch 桌面启动详解不管是开机还是重启手机,相信我们大家都不陌生吧。大部分的 90 后都经历了从 Android 2.* 的统一开机动画,到现在 Android 10 的各种定制开机动画。为什么 Android 系统启动时需要播放一段开机动画呢,而且播放完成后有的性能比较差的机器或者定制度比较高的 Room 都需要在最后一帧动画定格一段时间,是因为 Android 系统启动时首先需要从 ...原创 2019-11-02 18:21:15 · 2657 阅读 · 0 评论 -
AMS、Activity 启动流程详解
AMS、Activity 启动流程详解概述ActivityManagerService(以后简称AMS)都有所耳闻。AMS 是 Android 中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,因此它在 Android 中非常重要。先来看AMS的家族图谱相关类说明ActivityManagerServic...原创 2019-11-01 17:09:08 · 1022 阅读 · 0 评论 -
PMS启动 APK 安装流程详解
PMS启动 APK 安装流程详解概述PackageManagerService(以下简称 PMS)是一个常用的系统服务,主要负责系统中的 Package 的管理,应用程序的安装、卸载、查询等相关功能。其相关类图如下相关类说明IPackageManager定义了服务端和客户端通信的业务函数,还定义了内部类 Stub ,该类从 Binder 派生并实现了 IPackageManager ...原创 2019-10-31 17:54:51 · 2310 阅读 · 0 评论 -
Binder 详解
Binder 详解什么是 BinderBinder 是一种进程间通信机制,基于开源的 OpenBinder 实现;OpenBinder 起初由 Be Inc. 开发,后由 Plam Inc. 接手。从字面上来解释 Binder 有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。Binder 的由来我们知道,Android 系统就是运行在 Linux 系统之上。而 Linux ...原创 2019-10-30 17:55:43 · 1181 阅读 · 0 评论 -
UI 绘制流程及原理全过程解析
UI 绘制流程及原理全过程解析UI 绘制流程类文章在网上一搜一大把,但是都有一定的断层。比如只分析了View的三大流程 onMeasure 、 onLayout 、 onDraw ,但是这三个方法的调用链却没有描述。这篇文章就应运而生。Window 顶层 DecorView 身世我们都知道,通过 startActivity启动一个页面时,如果在 onCreate没有调用 setConten...原创 2019-08-01 11:23:28 · 1549 阅读 · 0 评论 -
View 的测量 MeasureSpec
View 的测量 MeasureSpec我们平常自定义都是重写 view 的 onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法,而这个方法传入的宽和高都是一个32位 int 值。下面我们揭开这层神秘的面纱。MeasureSpec 解析MeasureSpec 是位于 View 类中的一个静态类,也就 100 行左右。我们先来看其中...原创 2019-07-30 21:24:46 · 230 阅读 · 0 评论 -
Vsync机制和Choreographer详解
文章目录UI 卡顿定义卡顿原因及常见解决方式VSync定义作用工作原理Buffer 缓存机制单缓存双缓存三缓存Choreographer使用源码分析UI 卡顿定义用户角度:APP 操作比较缓慢,响应不及时,列表滑动卡顿,动画刷新不流畅等系统角度:屏幕刷新帧率不稳定,无法保证每秒60(跟手机有关)帧刷新频率,出现掉帧现象卡顿原因及常见解决方式过度绘制去除不必要背景布局...原创 2019-11-07 16:42:03 · 1461 阅读 · 8 评论