- 博客(345)
- 收藏
- 关注
原创 【Android开发基础】专栏入口导航-从小白到系统开发者
摘要: 本文是《Android开发基础》专栏的导航入口,由一位5年Android Framework开发经验的工程师主理,提供从Java基础到Android系统源码的全栈学习路线。专栏特色在于不仅讲解API使用,更深入剖析底层设计原理(如AMS/WMS/Binder),帮助开发者从"会用"进阶到"懂原理"。内容分为三阶段: Java语法地基(更新中):涵盖JDK配置、基础语法等; Android核心(筹备中):Activity/View/数据存储等; Framework原理(筹备中)。
2026-06-09 00:13:35
287
原创 OomAdjusterModernImpl-Android16进程优先级现代实现-槽位化调度与连接传播
本文基于 Android 16 AOSP 源码,深度拆解 `OomAdjusterModernImpl` 这一全新进程优先级计算架构的设计思想与实现细节。文章从传统 `OomAdjuster` 的遍历瓶颈切入,对比现代实现引入的 ADJ_SLOT 槽位化模型、ProcessRecordNode 双向链表、procState/adj 双轨并行遍历策略,以及连接传播(Connection Propagation)的可达性收集机制。
2026-09-23 23:44:41
13
原创 【Android系统性能优化】ANR全链路-AnrHelper-ProcessErrorStateRecord-Android16源码级拆解
本文基于 Android 16 AOSP 源码,完整拆解一条 ANR 从检测到上报再到最终弹窗或静默回收的全链路。文章从 InputDispatcher 的超时触发点切入,追踪 WMS 侧 `AnrController` 的 blame 判定、AMS 侧 `AnrHelper` 的队列化调度、`ProcessErrorStateRecord` 的 dump 与弹窗决策,以及 Android 16 新增的 `TimeoutRecord` 延迟追踪体系。配以 Mermaid 时序图展示跨系统服务的完整信号旅程。
2026-09-23 23:43:41
141
原创 【Android性能优化】Android CPU可用性监控:CpuMonitorService 调度感知与双周期自适应切换源码深度解析
本文聚焦 Android 性能优化中"系统 CPU 资源够不够用"这个最上游问题——基于 Android 16 源码 frameworks/base/base/services/core/java/com/android/server/cpu/CpuMonitorService.java 与 CpuInfoReader.java、CpuAvailabilityMonitoringConfig.java 三件套,深度拆解 Android 12 新引入的 CPU 可用性监控子系统。
2026-09-20 23:03:11
109
原创 【Android性能优化】Android CUJ追踪与卡顿判定:FrameTracker 双路回调合并与超时收敛源码深度解析
本文聚焦 Android 性能优化中"卡顿归因"的关键链路——关键用户旅程(CUJ)的追踪与判定机制。文章从"一次点击操作背后要追踪几帧才算完"切入,基于 Android 16 源码 frameworks/base/core/java/com/android/internal/jank/FrameTracker.java 深度拆解:CUJ 是什么、与 native 层同名类的边界、begin/end/cancel 三态生命周期、七种 REASON 原因分类。
2026-09-20 23:01:19
154
原创 【Android性能优化】Android显示电源执行器:DisplayPowerController状态落地链路与亮度渐变艺术深度解析
PowerGroup 算出"该亮该灭"、投票体系裁定"跑多少赫兹",但谁把决定真正落到硬件?本文基于 Android 16 源码,拆解 DisplayPowerController 这个执行器:updatePowerState 七阶段主线、Float.NaN 作"未定"哨兵的亮度策略链、RampAnimator 在 HLG 感知空间的渐变引擎、屏幕开关的 unblocker 过渡仪式、doze 硬件自黑屏的伪造 OFF 技巧、ready 与 unfinished business 的 wakelock 边界
2026-09-19 23:26:07
350
原创 【Android性能优化】Android消息派发统计:LooperStats采样引擎与慢消息归因体系深度解析
system_server 里跑着上百个 Handler、几十个线程,当某条消息悄悄耗时 500ms,既没有 crash 也没有 ANR,谁来把它揪出来?本文基于 Android 16 源码,拆解 LooperStats 消息派发统计体系:Looper.Observer 三钩子契约、千分之一采样与 Session 对象池、派发延迟/排队延迟/CPU 时间三种时间的分离计量、idFor 哈希与碰撞兜底、1500 条目容量红线、充电即停的省电自觉,以及与慢日志、BinderCallsStats。
2026-09-19 23:24:24
120
原创 【Android性能优化】Android电池状态广播节流:BatteryService电量分发链路与限流策略深度解析
电池的电压、电流、温度每秒都在抖动,如果每次抖动都触发一次系统级广播,整个系统将被 BATTERY_CHANGED 洪水淹没。本文基于 Android 16 源码,拆解 BatteryService 的电量分发链路:HAL HealthInfo 上报入口、16 个变化检测基准字段、电压 1%+20 秒、温度 1 度、电流 5 秒的三重节流闸门、三条专项广播通道的投递组折叠策略、LEVEL_CHANGED 的 60 秒队列化批量打包,以及低电关机与垂死取证。
2026-09-18 22:50:08
134
原创 【Android性能优化】BinderCallsStats统计机制:system_server的IPC调用采样与CPU耗时归因全解析
system_server 每秒承接着成千上万次 Binder 调用,可一旦出现 IPC 洪水或慢调用,默认却毫无线索可查。本文基于 Android 16 源码,拆解 BinderCallsStats 观测体系:Binder.setObserver 三件套注入、千分之一的周期性采样设计、充电即停的省电哲学、未命中采样只计数不建键的内存控制、OverflowBinder 洪水聚合、work source 信任列表防伪造归因、按设备分片的 sharding 策略,以及 dumpsys 实战解读。
2026-09-18 22:48:41
214
原创 【Android性能优化】Android Watchdog看门狗机制:system_server死锁检测与自杀重启全流程
system_server 一旦卡死,整个 Android 系统随之瘫痪——可谁来看守看守者?本文基于 Android 16 源码,完整拆解 Watchdog 看门狗机制:HandlerChecker 的点名卡设计与 isHandlerPolling 优化、COMPLETED 到 OVERDUE 的四态判定、每 15 秒一轮的检查节奏与深睡不计时、pre-watchdog 半程取证、动手前的四道赦免令、logWatchog 死前取证仪式。
2026-09-16 23:37:09
108
原创 【Android性能优化】Android广播调度重构:BroadcastProcessQueue按进程派发机制全解析
广播是 Android 中最高频的通信方式之一,但老架构下所有接收者共用串行派发队列,一个慢进程足以堵住整条链路。本文基于 Android 16 源码,拆解 `BroadcastQueueImpl` 与 `BroadcastProcessQueue` 的按进程派发架构:三条待发车道、`runnableAt` 全局有序链表、槽位制并行调度、正负 120 秒延迟矩阵、防饥饿派发上限,以及冷启动放弃机制与冻结进程联动。适合正在做系统性能优化或排查广播派发延迟的 Framework 工程师阅读。
2026-09-16 23:35:53
59
原创 【Android性能优化】Android刷新率决策源码解析:DisplayModeDirector的24级Vote投票体系
本文拆解 Android 16 中屏幕刷新率的中央决策机构 `DisplayModeDirector`:24 级优先级的 Vote 投票体系如何表达"游戏要 120Hz、省电要 60Hz、发热要降频、指纹要锁频"这些互相打架的诉求;`VotesStorage` 的一屏一票存储与全局票合并规则;`VoteSummary` 从投票堆到刷新率区间的八层验证链;以及跳帧除数判定、热状态迟滞降级、屏下指纹为何拿到最高优先级等设计细节。适合做显示性能、功耗优化的系统开发者阅读。
2026-09-14 23:38:23
161
原创 【Android性能优化】Android ANR机制源码解析:从超时触发到traces收集的完整处置链路
本文以 Android 16 的 `AnrHelper.java`、`ProcessErrorStateRecord.java` 与 `AppErrors.java` 为蓝本,完整拆解 ANR 发生之后系统内部的处置链路:三重去重与 ANR 消费队列、early dump 抢救主进程栈的竞速设计、五道守卫过滤无效 ANR、firstPids/lastPids 分级收集 traces、静默 ANR 的省时取舍、AnrController 延迟弹窗与 PackageWatchdog 联动。
2026-09-14 23:36:22
129
原创 【Android性能优化】Android 息屏超时自动延长机制:ScreenUndimDetector 源码级解析
本文基于 AOSP Android 16 源码,以 `ScreenUndimDetector` 为核心,深度解析 Android 的"息屏超时自动延长"机制——当用户在屏幕变暗后又手动调亮若干次时,系统会自动持有一个临时唤醒锁把屏幕多留一会儿。文中完整还原 `POLICY_DIM → POLICY_BRIGHT` 的状态跃迁检测、`mUndimCounter` 连续变亮计数与 `mMaxDurationBetweenUndimsMillis` 间隔重置逻辑。
2026-09-13 23:51:59
291
原创 【Android性能优化】Android屏幕状态机与显示电源决策:PowerGroup 源码级解析
本文基于 AOSP Android 16 源码,以 `PowerGroup` 为核心,深度解析 Android 的屏幕状态机与显示电源决策链路。文中完整梳理 `WAKEFULNESS_ASLEEP / DOZING / DREAMING / AWAKE` 四态迁移的守卫条件(`eventTime < mLastSleepTime` 这类时间戳校验为何是必需的),拆解 `updateScreenPolicyLocked()` 中从 wakefulness、wakeLockSummary。
2026-09-13 23:50:12
128
原创 【Android性能优化】Android App 冻结与内存压缩:CachedAppOptimizer 源码级解析
本文基于 AOSP Android 16 源码,以 `CachedAppOptimizer` 为核心,深度解析 Android 对"后台缓存应用"的两大治理手段——**进程冻结(Freezer)**与**内存压缩(Compaction)**。文中完整还原冻结的 debounce 去抖动机制、`mEarliestFreezableTime` 的最早可冻结时刻算法、粘性冻结(Sticky Freeze)的语义,以及解冻时必须"先解 binder 再解进程"的顺序奥义。
2026-09-11 23:06:43
155
原创 【Android性能优化】Android Trace 追踪体系:TRACE_TAG、异步追踪与 atrace 源码级解析
本文基于 AOSP Android 16 源码,以 `android.os.Trace` 为核心,系统解析 Android 的跨进程追踪体系。文中完整梳理 28 个 `TRACE_TAG` 位掩码标签的含义与演进(从 GRAPHICS、VIEW、DALVIK 到新增的 THERMAL、RRO、NNAPI),讲清 `TRACE_TAG_NOT_READY` 哨兵值与 `MAX_SECTION_NAME_LEN` 长度限制的设计考量。
2026-09-11 23:04:59
138
原创 【Android性能优化】Android时钟体系与性能计时:SystemClock 源码级解析
本文基于 AOSP Android 16 源码,以 `SystemClock` 为核心,深度解析 Android 的三套时钟体系。文中讲清墙上时钟 `System.currentTimeMillis()`、`uptimeMillis()`、`elapsedRealtime()` 三者的起点、是否包含深睡、能否被修改等本质差异,并从源码注释还原官方"间隔计时请换一个时钟"的告诫。同时拆解 `@CriticalNative` 注解为高频时间查询带来的性能收益,逐行分析 `SystemClock.sleep()。
2026-09-10 23:37:58
144
原创 【Android性能优化】Android内存度量体系:PSS、RSS、USS 与 dumpsys meminfo 的源码级解析
本文基于 AOSP Android 16 源码,以 `Debug.MemoryInfo` 为切入点,系统拆解 Android 内存度量的完整口径体系。文中讲清 dalvik / native / other 三大分类的来源,逐条解析 PSS、SwappablePss、RSS、Private Dirty、Shared Dirty、Private Clean、Shared Clean、SwappedOut、SwappedOutPss 这九个维度的含义与差异,并深入 `other` 分类下 `.so`。
2026-09-10 23:36:46
685
原创 【Android Performance】功耗模型PowerProfile源码级解析——从CPU功耗方程到硬件耗电估算的单价表
本文系统讲解Android功耗估算的基石——PowerProfile功耗模型。文章从"系统怎么知道CPU转1秒耗多少电"这一疑问切入,结合Android 16源码(frameworks/base/core/java/com/android/internal/os/PowerProfile.java)详解功耗模型的构建机制——PowerProfile如何从XML读取各硬件的功耗常数、CPU功耗方程(suspend/idle/active + cluster功率 + core功率×核数)如何计算CPU总耗电。
2026-09-09 23:53:29
333
原创 【Android Performance】Zygote进程孵化机制源码级解析——从预加载到fork加速应用启动的秘密
本文系统讲解Android应用进程的孵化机制Zygote及其对应用启动性能的核心贡献。文章从"为什么新建一个应用进程能这么快"这一疑问切入,结合Android 16源码(frameworks/base/core/java/com/android/internal/os/Zygote.java、ZygoteInit.java、ZygoteServer.java)详解Zygote孵化机制——Zygote作为"应用进程模板"在开机时预加载常用类库与资源、AMS通过socket向Zygote请求fork新进程。
2026-09-09 23:52:28
95
原创 【Android Performance】Alarm闹钟唤醒机制源码级解析——从闹钟类型到精确性合并的系统省电调度
本文系统讲解Android闹钟(Alarm)机制及其对系统性能与续航的影响。文章从"后台应用乱设闹钟导致频繁唤醒、待机掉电"这一痛点切入,结合Android 16源码(frameworks/base/apex/jobscheduler/framework/java/android/app/AlarmManager.java)详解闹钟机制——四种闹钟类型(RTC_WAKEUP/ELAPSED_REALTIME_WAKEUP等)的语义、唤醒闹钟与普通闹钟的区别、闹钟触发时持有的CPU wakelock机制。
2026-09-08 23:38:52
170
原创 【Android Performance】主线程消息循环与卡顿源码级解析——从Looper慢消息检测到UI线程阻塞定位
本文系统讲解Android主线程消息循环(Looper/Handler/MessageQueue)与UI卡顿的关系,聚焦"主线程为什么卡"的性能视角。文章从"App所有UI操作都跑在主线程消息循环上"切入,结合Android 16源码(frameworks/base/core/java/android/os/Looper.java、Handler.java)详解消息循环机制——Looper如何从MessageQueue取消息并分发到Handler执行。
2026-09-08 23:37:38
136
原创 【Android Performance】触控输入性能源码级解析——从InputReader到应用的触摸延迟优化
本文系统讲解Android触摸输入的性能与延迟优化机制。文章从"点击没反应、滑动跟不上手指"的触控延迟痛点切入,结合Android 16源码(frameworks/native/services/inputflinger/、frameworks/base/services/core/java/com/android/server/input/InputManagerService.java)详解触摸事件的完整链路。
2026-09-07 22:42:17
141
原创 【Android Performance】Binder IPC性能源码级解析——从BinderCallsStats到跨进程调用开销的量化监控
本文系统讲解Android跨进程通信(IPC)Binder的性能开销与监控机制。文章从"系统卡顿很多时候是Binder调用排队造成的"这一认知切入,结合Android 16源码(frameworks/base/core/java/com/android/internal/os/BinderCallsStats.java)详解Binder调用性能的采集机制——BinderCallsStats如何收集每次Binder调用的CPU耗时、按uid/调用描述/线程等多维度统计。
2026-09-07 22:41:01
90
原创 【Android Performance】Choreographer帧调度机制源码级解析——从VSYNC脉冲到doFrame的应用渲染节奏
本文系统讲解Android应用侧帧调度的核心机制——Choreographer。文章从"应用如何知道何时该画下一帧"切入,结合Android 16源码(frameworks/base/core/java/android/view/Choreographer.java)详解应用渲染节奏的协调机制——Choreographer如何接收显示子系统的VSYNC定时脉冲、如何把动画/输入/绘制调度到下一帧执行。
2026-09-06 23:14:15
127
原创 【Android Performance】开机启动性能源码级解析——从bootstat事件记录到开机耗时优化的完整链路
本文系统讲解Android开机启动性能的量化与优化机制。文章从"开机快慢是用户对手机的第一体验"切入,结合Android 16源码(system/core/bootstat/bootstat.cpp)详解开机时间统计的完整机制——bootstat如何记录各类BootEvent(开机事件)与时间戳、ELAPSED_TIME/DURATION/UTC_TIME三类事件如何映射到statsd atoms、开机过程的完整阶段划分。
2026-09-06 23:12:52
157
原创 【Android Performance】进程优先级状态机源码级解析——从OomAdjuster计算adj到调度组联动
本文系统讲解Android进程优先级(OOM adj)的动态评估机制及其对系统性能的影响。文章聚焦"每个进程的生死分值adj是怎么算出来的",结合Android 16源码(frameworks/base/services/core/java/com/android/server/am/OomAdjuster.java、ProcessList.java)详解进程状态机体系——PROCESS_STATE_*状态枚举(TOP/FOREGROUND_SERVICE/CACHED_ACTIVITY等)。
2026-09-05 23:48:58
103
原创 【Android Performance】线程调度分组与cpuset隔离源码级解析——从SchedPolicy到TaskProfiles的绑核保障
本文系统讲解Android线程调度分组(SchedPolicy)与cpuset绑核隔离机制。文章从"后台线程抢CPU导致前台卡顿"这一痛点切入,结合Android 16源码(system/core/libprocessgroup/sched_policy.cpp、task_profiles.cpp)详解调度策略的完整实现——SchedPolicy枚举(SP_BACKGROUND/SP_FOREGROUND/SP_TOP_APP/SP_RESTRICTED等)如何定义线程分组。
2026-09-05 23:47:34
165
原创 【Android Performance】应用渲染性能与硬件加速源码级解析——从RenderThread到过度绘制优化
本文系统讲解Android应用侧渲染性能与硬件加速机制。文章聚焦应用自身的渲染管线(区别于SurfaceFlinger合成),结合Android 16源码(frameworks/base/core/java/android/view/ThreadedRenderer.java)详解硬件加速渲染的核心机制——ThreadedRenderer如何将渲染代理到独立的RenderThread、RenderThread与UI线程的协作约束(UI可阻塞RenderThread但反之不行)。
2026-09-04 23:38:30
106
原创 【Android Performance】ZRAM压缩内存回写机制源码级解析——从Swap压缩到idle页回写释放内存
本文系统讲解Android ZRAM(压缩内存/压缩Swap)的完整机制,聚焦"压缩内存如何标记空闲并回写到磁盘以释放内存"这一核心实现。文章从"ZRAM用压缩Swap让低内存设备多装几个应用"切入,结合Android 16源码(frameworks/base/services/core/java/com/android/server/ZramWriteback.java)详解ZRAM回写的完整机制。
2026-09-04 23:37:08
402
原创 【Android Performance】电池续航与功耗统计源码级解析——从BatteryStats到耗电归因的完整体系
本文系统讲解Android电池续航与功耗统计的完整体系。文章从"用户投诉耗电快,如何精准定位谁在偷电"这一痛点切入,结合Android 16源码(frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java)详解电池统计的核心机制——BatteryStatsService如何采集各Uid的耗电、功耗组件(POWER_COMPONENT_CPU/WAKE_LOCK/SCREEN等)的划分。
2026-09-03 23:57:18
154
原创 【Android Performance】CPU调频(DVFS)机制源码级解析——从cluster簇到频率调节的性能供给
本文系统讲解Android CPU调频(DVFS,Dynamic Voltage and Frequency Scaling)机制及其对系统性能与功耗的影响。文章从"手机性能的钥匙其实在CPU频率里"这一认知切入,结合Android 16源码(frameworks/base/core/java/com/android/internal/os/CpuScalingPolicies.java、android/os/Process.java)详解CPU调频的核心数据结构。
2026-09-03 23:55:52
282
原创 【Android Performance】存储文件系统性能源码级解析——从f2fs挂载参数到分区优化的完整体系
本文系统讲解Android存储文件系统的性能优化机制。文章从"存储性能决定应用安装、启动、数据读写的下限"这一痛点切入,结合Android 16源码(system/vold/fs/F2fs.cpp)详解f2fs文件系统在Android中的完整实现——Mount挂载参数(MS_NOATIME/MS_DIRSYNC等)、Format格式化参数(-g android 4K扇区、compression压缩、casefold大小写、zoned分区)、IsSupported支持检测。
2026-09-01 23:50:47
444
原创 【Android Performance】IO调度策略源码级解析——从ioprio到进程IO优先级的性能保障
本文系统讲解Android IO调度策略及其对系统性能的影响。文章从"存储IO是性能瓶颈,前台应用IO不能与后台争抢"这一痛点切入,结合Android 16源码(system/core/libcutils/iosched_policy.cpp)详解IO优先级的底层实现——ioprio_set/ioprio_get系统调用、IoSchedClass调度类(NONE/RT实时/BE尽力而为/IDLE空闲)、IOPRIO_CLASS_SHIFT优先级编码。
2026-09-01 23:49:05
160
原创 【Android Performance】热管理(Thermal)机制源码级解析——温控如何限制CPU频率与性能释放
本文系统讲解Android热管理(Thermal Management)机制及其对CPU性能释放的关键影响。文章从"手机发热必然降频"这一用户感知切入,结合Android 16源码(frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java)详解热管理服务的完整架构——IThermal HAL接口、TemperatureType温度类型(CPU/GPU/电池/皮肤等)。
2026-08-31 23:49:20
141
原创 【Android Performance】应用启动性能源码级解析——从进程启动到Activity绘制的全链路
本文系统讲解Android应用启动性能的优化方法论与底层机制。文章从"启动慢是用户流失的头号原因"切入,结合Android 16源码(frameworks/base/services/core/java/com/android/server/am/ProcessList.java、ActivityStarter.java)详解应用启动的完整链路:进程启动(Process.start)、Zygote孵化、Activity启动(ActivityStarter)。
2026-08-31 23:47:58
156
原创 【Android Performance】LMKD内存回收机制源码级解析——从PSI压力监测到进程杀伐决策的完整实现
本文系统拆解Android低内存守护进程LMKD(Low Memory Killer Daemon)的源码实现,聚焦"它如何感知内存压力、如何选出牺牲者"两个核心问题。文章从Android 16源码(system/memory/lmkd)切入,详解PSI(Pressure Stall Information)监测机制的完整实现——psi.cpp中 init_psi_monitor 的 some/full 两档监测、threshold/window 参数、avg10/avg60/avg300 三级均值指标。
2026-08-30 23:46:12
129
原创 【Android Performance】WakeLock机制源码级解析——从CPU保活到功耗与性能的平衡艺术
本文系统讲解Android电源管理中的WakeLock(唤醒锁)机制及其对CPU性能与功耗的影响。文章从Android 16源码(frameworks/base/core/java/android/os/PowerManager.java)切入,详解WakeLock的完整等级体系——PARTIAL_WAKE_LOCK(CPU保活)、SCREEN_*_WAKE_LOCK(屏幕保活)、DOZE_WAKE_LOCK(Doze模式)、DRAW_WAKE_LOCK(绘制允许)等。
2026-08-30 23:44:35
144
原创 【Android Performance】帧时序分析体系详解——从FrameTimeline到FrameStats的完整定位链路
本文系统讲解Android性能优化中最核心的帧时序(Frame Timeline)分析体系。文章从"一帧从产生到上屏要经历哪些时刻"切入,结合Android 16源码逐层拆解四套互补的帧记录机制:native层的FrameTracker(三时间戳记录)、FrameTimeline(Perfetto中Expected/Actual帧时序追踪)、TimeStats(帧耗时直方图统计)、Java层的FrameStats/WindowContentFrameStats(面向应用的帧统计API)。
2026-08-28 23:25:44
215
个人简历模板100套(work格式,可编辑)
2026-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅