自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android

开发相关知识

  • 博客(75)
  • 收藏
  • 关注

原创 博客目录导航

WebView (一):简述WebView (二):加速Android Studio Gradle 编译加速ANR 简述信号机制简述Android 插件化技术简史热修复、插件化技术简析Hook 手段总结加密算法简述计算机网络(一):TCP计算机网络(二):HTTPDNS、IPv6、QUICOkHttp 原理简析RecyclerView VS ListViewView 触摸机制(事件分发)View 绘制流程Android 布局界面结构简析Input 机制简述ActivityManagerService 简析W

2025-10-13 13:19:43 517

原创 Handle 简述

Message:MessageQueue:Handler:Looper:ThreadLocal:IdleHandler 闲时调用:

2026-10-29 12:33:20 146

原创 Input 机制简述

监听Input设备的加入与删除(scanDevicesLocked() & openDeviceLocked() 可用设备扫描及加载);获取Input设备的输入事件。InputReader中持续循环线程loopOnce()调用EventHub的getEvents(),该函数epoll_wait等待着Input设备的输入事件到来。将输入事件整合,由InputReader获取并分发至各Android上层服务或应用。连结底层输入设备与上层InputReader的纽带。

2026-10-29 11:09:29 192

原创 加密算法简述

CRC8、CRC16、CRC32:CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。

2026-10-28 12:58:39 238

原创 OkHttp 原理简析

每个拦截器中的intercept方法:转化:建立:行动:

2026-10-27 13:05:08 238

原创 Dex 文件简述

关键指令类别:逻辑:常见修改思路:

2026-10-18 11:48:21 181

原创 Class 文件简述

魔数:

2026-10-18 11:44:37 90

原创 转移 AndroidStudio 的C盘资源

2026-08-18 16:01:36 243

原创 Android .so 文件压缩

当多个 so 以静态方式依赖了某个相同的库时,可以考虑将此库提取成一个单独的 so,原来的几个 so 改为动态依赖该 so。提取多 so 共同依赖库,可以对不同 so 内的相同代码进行合并,从而减小总的 so 体积。如果项目中没有使用 C++ 的 RTTI 机制(例如 typeid 和 dynamic_cast 等),可以通过禁用 C++ 的 RTTI ,来减小 so 的体积。如果项目中没有使用 C++ 的异常机制(例如 try…catch 等),可以通过禁用 C++ 的异常机制,来减小 so 的体积。

2026-08-01 11:22:21 236

原创 Android 渲染(三):掉帧监控

Android 渲染(一):刷新机制Android 渲染(二):Choreographer、SurfaceFlinger、HWComposerAndroid 渲染(三):掉帧监控

2026-07-21 13:31:05 214

原创 WebView (二):加速

WebView (一):简述WebView (二):加速

2026-07-01 11:52:01 333

原创 计算机网络(二):HTTPDNS、IPv6、QUIC

介绍:优势:介绍:优势:介绍:优势:

2026-03-29 15:23:17 319

原创 计算机网络(一):TCP

拥塞窗口 cwnd 变化的规则:只要网络中没有出现拥塞,cwnd 就会增大;但网络中出现了拥塞,cwnd 就减少。通过检测ACK、RTT、RTO,进行调整。通过调整拥塞窗口,辅助调整慢启动阈值,流程切换控制流量与拥塞情况。发送窗口的值是swnd = min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。流量控制:根据收发端能力,控制传输量,提高传输效率。拥塞控制:应对网络延时重传情况,及时调整传输量。发送窗口 拥塞窗口(发送方算法控制) 接收窗口。

2026-03-29 15:15:39 446 1

原创 垃圾回收器(二):G1

YGC流程:混合回收:

2026-03-29 14:56:16 410

原创 垃圾回收器(一):CMS

分为 Background 和 Foreground 两种模式,前者就是我们常规理解中的并发收集,可以不影响正常的业务线程运行,但 Foreground Collector 却有很大的差异,他会进行一次压缩式 GC。因为收集器是基于标记清除算法实现的,所以在收集器回收结束后,内存会产生碎片化,当碎片化非常严重的时候,这时候有大对象进入无法分配内存时会触发FullGC,特殊场景下会使用Serial收集器,导致停顿不可控。使用场景:适用于互联网或者 B/S服务, 响应速度优先,适合6G左右。

2026-03-29 14:55:14 335

原创 Java 的并发实现

原理:锁管理:

2026-02-03 10:29:21 500

原创 多线程并发原理

大多数现代微处理器都会采用将指令乱序执行(out-of-order execution,简称OoOE或OOE)的方法,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待。编译期:指令重排(编译器),编译器会为了性能而对指令重排,源码上先后的两行,被编译器编译后,可能调换指令顺序,但编译器会基于一套规则做指令重排,有明显依赖的指令不会被随意重排,指令重排不能破坏程序逻辑。

2026-02-03 10:27:22 284

原创 PackageManagerService 简析

2、扫描设备中的几个分区目录下的应用文件,把扫描结果保存到PMS的mPackages中。这记录的是当前系统中的应用状态信息。1、先读取packages.xml文件内容,解析并保存在成员变量mSettings中。3、后面就是对两次的应用状态信息进行:比对、重新调整、扫描特定目录。4、最后将应用信息重新写回packages.xml文件。

2026-01-28 13:53:26 319

原创 线程池简析

corePoolSize:maximumPoolSize:keepAliveTime:workQueue:threadFactory:handler:任务管理:线程管理:

2026-01-17 14:37:20 604

原创 编译(二):加载器、编译器、链接器

启动类加载器(Bootstrap ClassLoader):扩展类加载器(Extention ClassLoader):应用程序类加载器(Application ClassLoader):用户自定义的类加载器(User ClassLoader):URLClassLoader:PathClassLoader:DexClassLoader:JIT的运行流程:AOT(Ahead Of Time)和JIT(Just In Time)配合:

2026-01-16 10:46:58 606

原创 编译(三):代码执行流程

编译(一):理论知识编译(二):class、dex、so 编译流程

2026-01-15 11:06:07 656

原创 C 层函数调用与概念梳理

C 层函数调用与概念梳理Android System Lib 梳理

2026-01-11 16:27:41 793

原创 Android System Lib 梳理

Linker 不是 so:/system/bin/linker。libm.so:数学库。

2025-12-22 17:07:27 704

原创 ANR 简述

组件类 ANR:Input 类 ANR:

2025-12-12 10:38:13 340

原创 信号机制简述

2025-12-12 10:31:25 842

原创 Android 渲染(二):Choreographer、SurfaceFlinger、HWComposer

作用:重要方法:

2025-12-12 10:17:08 467

原创 Android 渲染(一):刷新机制

Android 渲染(一):刷新机制Android 渲染(二):Choreographer、SurfaceFlinger、HWComposerAndroid 渲染(三):掉帧监控

2025-12-12 10:15:46 235

原创 虚拟机(一):JVM

标记-清除算法:分为标记和清除两个阶段。该算法首先从根集合进行扫描,对存活的对象标记,标记完毕后,再扫描整个空间中未被标记的对象并进行回收。整个过程需要暂停整个程序的全部运行线程,让回收线程以单线程进行工作,过程结束再恢复运行线程。标记-整理算法:标记过程仍然与“标记-清除”算法一样,但不是直接对可回收对象进行清理。该算法在回收期间会同时将保留下来的对象移动聚集到连续的内存空间,从而避免内存空间碎片。但对象的移动是需要时间成本的。

2025-12-10 13:10:25 439

原创 虚拟机(三):ART

GetGcType:过程:

2025-12-10 13:04:24 372

原创 虚拟机(二):Dalvik

该垃圾回收算法是否是并行执行的。连Zygote的堆也要清理。是否需要对软引用进行处理等。

2025-12-10 13:02:42 239

原创 CPU 简述

32位:64位:ARM架构:x86架构:

2025-12-10 12:25:01 441

原创 Android 屏幕简述

尺寸:像素:屏幕分辨率:亮度:色彩:

2025-12-07 12:26:11 294

原创 线程的本质

线程生命周期:同步原语:线程属性:线程局部存储(TLS):happens-before规则:

2025-11-26 11:38:14 620

原创 编译(一):基础知识

传统机器层:编程语言主要是CPU指令集(机器指令),和硬件是直接相关的,程序员所用机器指令编写的程序可以交由微程序直接进行解析,而这里提到的指令集,存储在CPU内部,对CPU的运算进行指导和优化,拥有指令集,CPU就可以有效地运行。我们知道,CPU的制造商分为AMD和Intel两大阵营,那么这两大厂商生产的CPU最大的区别是——指令集不同,Intel的CPU所使用的指令集不适合AMD的CPU,同样的,AMD的CPU所使用的指令集也不适合Intel。由此可见,操作系统是在软件和硬件之间的适配层。

2025-11-26 11:32:24 469

原创 Hook 手段总结

字节码:Java:C:PLT (Procedure Linkage Table) GOT(Global Offset Table) Hook:Inline Hook:LD_PRELOAD:

2025-11-26 11:30:30 300

原创 热修复、插件化技术简析

方案:技术:

2025-11-18 12:35:31 171

原创 Android 布局界面结构简析

对象:布局:

2025-10-29 11:43:51 488

原创 WindowManagerService 简析

子窗口(1000~1999): 必须依附于一个父窗口。Dialog在Activity不可见的时候,要主动dismiss掉,否则会因为appToken为空crash。系统窗口(2000~2999): 拥有最高的Z-order,例如状态栏、导航栏、Toast、输入法窗口、系统音量条窗口、系统错误窗口等,可以覆盖在所有应用窗口之上。自由模式:类似于桌面操作系统,应用界面的窗口可以自由拖动和修改大小。分屏模式:将屏幕一分为二,同时显示两个应用的界面。画中画模式:窗口可以一直在最顶层显示。

2025-10-29 11:20:38 613

原创 ActivityManagerService 简析

> ActivityManagerService:服务器。= ApplicationThreadProxy:服务器。客户端:ActivityManagerProxy =客户端:ApplicationThread <=

2025-10-29 11:00:23 1038

原创 Binder 简述

2025-10-29 10:33:58 913

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除