📚 Android 性能优化 30 课时教案
目标:掌握 Android 性能优化核心方法,能独立分析并优化 App 性能问题。
📌 模块 1:性能优化基础(4 课时)
课时 1:性能优化概述
性能优化的意义(用户体验、留存率、耗电等)
性能优化的核心指标(FPS、内存、CPU、GPU、I/O、网络)
优化方法论(分析 → 定位 → 优化 → 验证)
课时 2:Android 渲染机制
UI 渲染流程(Measure → Layout → Draw)
VSYNC 与 Choreographer 原理
16ms 帧率限制与卡顿原因
课时 3:内存管理机制
Java 内存模型(堆、栈、方法区)
GC 机制(分代回收、GC 触发条件)
内存泄漏 vs. 内存抖动
课时 4:Android 存储优化
I/O 性能瓶颈(SQLite、SharedPreferences、文件读写)
MMAP 与 Buffer 优化
数据库优化(索引、事务、WAL 模式)
📌 模块 2:性能分析工具(6 课时)
课时 5:Android Profiler
CPU Profiler(火焰图、调用栈分析)
Memory Profiler(内存泄漏检测、Heap Dump)
Network Profiler(流量监控、API 耗时)
课时 6:Systrace
Systrace 原理与抓取方法
关键线程分析(UI Thread、RenderThread)
帧率分析(Alerts、Frame 耗时)
课时 7:Perfetto
Perfetto 与 Systrace 对比
高级分析(CPU Scheduling、GPU 负载)
自定义 Trace 埋点(Trace.beginSection())
课时 8:MAT(Memory Analyzer Tool)
Heap Dump 分析
Dominator Tree 与 Retained Heap
内存泄漏定位(LeakCanary 原理)
课时 9:StrictMode
主线程 I/O 检测
内存泄漏检测(detectLeakedClosableObjects)
课时 10:Benchmark
Jetpack Benchmark 库
CPU/内存/帧率基准测试
优化前后的性能对比
📌 模块 3:UI 优化(6 课时)
课时 11:布局优化
减少层级(ConstraintLayout、Merge、ViewStub)
避免过度绘制(showOverdraw)
布局加载优化(AsyncLayoutInflater)
课时 12:列表优化(RecyclerView)
复用机制(ViewHolder、RecycledViewPool)
DiffUtil 优化数据更新
预加载(setItemViewCacheSize)
课时 13:自定义 View 优化
onDraw() 优化(避免频繁创建对象)
硬件加速(setLayerType)
离屏缓冲(Canvas.saveLayer 优化)
课时 14:动画优化
属性动画 vs. 补间动画
ValueAnimator 优化
Lottie 动画性能分析
课时 15:Jetpack Compose 优化
重组(Recomposition)优化
remember 与 derivedStateOf
性能分析工具(Compose 专用 Profiler)
课时 16:Flutter 性能优化(可选)
Flutter 渲染机制(Skia、Raster Thread)
帧率优化(PerformanceOverlay)
📌 模块 4:内存优化(6 课时)
课时 17:内存泄漏分析
常见泄漏场景(Activity、Fragment、Handler)
LeakCanary 源码解析
弱引用 vs. 软引用
课时 18:Bitmap 优化
大图加载(inSampleSize、inBitmap)
Glide/Fresco 优化策略
Native 内存泄漏(Bitmap.recycle())
课时 19:Native 内存优化
JNI 内存管理(NewGlobalRef 泄漏)
Native Heap 分析(malloc_debug)
AddressSanitizer(ASan)检测内存错误
课时 20:内存缓存优化
LruCache 原理
DiskLruCache 优化
缓存策略(内存 + 磁盘)
课时 21:低内存设备优化
onTrimMemory() 回调
大图降级策略
资源文件优化(WebP、Vector)
课时 22:Kotlin 内存优化
内联函数(inline)
协程内存管理(结构化并发)
避免 object 单例泄漏
📌 模块 5:网络 & 存储优化(4 课时)
课时 23:网络优化
HTTP/2 与 QUIC 协议
连接复用(OkHttp ConnectionPool)
数据压缩(Gzip、Protobuf)
课时 24:数据库优化
Room 性能优化(索引、事务)
SQLite 调优(PRAGMA 优化)
数据库加密(SQLCipher)性能影响
课时 25:文件存储优化
mmap 优化 SharedPreferences
序列化优化(JSON vs. Protobuf)
文件锁优化(FileLock)
课时 26:SharedPreferences 优化
apply() vs. commit()
数据分片(避免大文件)
MMKV 替代方案
📌 模块 6:高级优化(4 课时)
课时 27:启动优化
冷启动 vs. 热启动
App Startup 库
异步初始化(IntentService、Coroutine)
课时 28:电量优化
JobScheduler vs. WorkManager
AlarmManager 优化
Battery Historian 分析
课时 29:包体积优化
资源混淆(AndResGuard)
代码混淆(R8 优化)
动态加载(App Bundle)
课时 30:性能监控 & APM
线上监控(FPS、Crash、ANR)
字节码插桩(ASM)
自研 APM 系统架构