?? Android 性能優(yōu)化 30 課時(shí)教案
目標(biāo):掌握 Android 性能優(yōu)化核心方法,能獨(dú)立分析并優(yōu)化 App 性能問題。
?? 模塊 1:性能優(yōu)化基礎(chǔ)(4 課時(shí))
課時(shí) 1:性能優(yōu)化概述
性能優(yōu)化的意義(用戶體驗(yàn)、留存率、耗電等)
性能優(yōu)化的核心指標(biāo)(FPS、內(nèi)存、CPU、GPU、I/O、網(wǎng)絡(luò))
優(yōu)化方法論(分析 → 定位 → 優(yōu)化 → 驗(yàn)證)
課時(shí) 2:Android 渲染機(jī)制
UI 渲染流程(Measure → Layout → Draw)
VSYNC 與 Choreographer 原理
16ms 幀率限制與卡頓原因
課時(shí) 3:內(nèi)存管理機(jī)制
Java 內(nèi)存模型(堆、棧、方法區(qū))
GC 機(jī)制(分代回收、GC 觸發(fā)條件)
內(nèi)存泄漏 vs. 內(nèi)存抖動(dòng)
課時(shí) 4:Android 存儲(chǔ)優(yōu)化
I/O 性能瓶頸(SQLite、SharedPreferences、文件讀寫)
MMAP 與 Buffer 優(yōu)化
數(shù)據(jù)庫(kù)優(yōu)化(索引、事務(wù)、WAL 模式)
?? 模塊 2:性能分析工具(6 課時(shí))
課時(shí) 5:Android Profiler
CPU Profiler(火焰圖、調(diào)用棧分析)
Memory Profiler(內(nèi)存泄漏檢測(cè)、Heap Dump)
Network Profiler(流量監(jiān)控、API 耗時(shí))
課時(shí) 6:Systrace
Systrace 原理與抓取方法
關(guān)鍵線程分析(UI Thread、RenderThread)
幀率分析(Alerts、Frame 耗時(shí))
課時(shí) 7:Perfetto
Perfetto 與 Systrace 對(duì)比
高級(jí)分析(CPU Scheduling、GPU 負(fù)載)
自定義 Trace 埋點(diǎn)(Trace.beginSection())
課時(shí) 8:MAT(Memory Analyzer Tool)
Heap Dump 分析
Dominator Tree 與 Retained Heap
內(nèi)存泄漏定位(LeakCanary 原理)
課時(shí) 9:StrictMode
主線程 I/O 檢測(cè)
內(nèi)存泄漏檢測(cè)(detectLeakedClosableObjects)
課時(shí) 10:Benchmark
Jetpack Benchmark 庫(kù)
CPU/內(nèi)存/幀率基準(zhǔn)測(cè)試
優(yōu)化前后的性能對(duì)比
?? 模塊 3:UI 優(yōu)化(6 課時(shí))
課時(shí) 11:布局優(yōu)化
減少層級(jí)(ConstraintLayout、Merge、ViewStub)
避免過度繪制(showOverdraw)
布局加載優(yōu)化(AsyncLayoutInflater)
課時(shí) 12:列表優(yōu)化(RecyclerView)
復(fù)用機(jī)制(ViewHolder、RecycledViewPool)
DiffUtil 優(yōu)化數(shù)據(jù)更新
預(yù)加載(setItemViewCacheSize)
課時(shí) 13:自定義 View 優(yōu)化
onDraw() 優(yōu)化(避免頻繁創(chuàng)建對(duì)象)
硬件加速(setLayerType)
離屏緩沖(Canvas.saveLayer 優(yōu)化)
課時(shí) 14:動(dòng)畫優(yōu)化
屬性動(dòng)畫 vs. 補(bǔ)間動(dòng)畫
ValueAnimator 優(yōu)化
Lottie 動(dòng)畫性能分析
課時(shí) 15:Jetpack Compose 優(yōu)化
重組(Recomposition)優(yōu)化
remember 與 derivedStateOf
性能分析工具(Compose 專用 Profiler)
課時(shí) 16:Flutter 性能優(yōu)化(可選)
Flutter 渲染機(jī)制(Skia、Raster Thread)
幀率優(yōu)化(PerformanceOverlay)
?? 模塊 4:內(nèi)存優(yōu)化(6 課時(shí))
課時(shí) 17:內(nèi)存泄漏分析
常見泄漏場(chǎng)景(Activity、Fragment、Handler)
LeakCanary 源碼解析
弱引用 vs. 軟引用
課時(shí) 18:Bitmap 優(yōu)化
大圖加載(inSampleSize、inBitmap)
Glide/Fresco 優(yōu)化策略
Native 內(nèi)存泄漏(Bitmap.recycle())
課時(shí) 19:Native 內(nèi)存優(yōu)化
JNI 內(nèi)存管理(NewGlobalRef 泄漏)
Native Heap 分析(malloc_debug)
AddressSanitizer(ASan)檢測(cè)內(nèi)存錯(cuò)誤
課時(shí) 20:內(nèi)存緩存優(yōu)化
LruCache 原理
DiskLruCache 優(yōu)化
緩存策略(內(nèi)存 + 磁盤)
課時(shí) 21:低內(nèi)存設(shè)備優(yōu)化
onTrimMemory() 回調(diào)
大圖降級(jí)策略
資源文件優(yōu)化(WebP、Vector)
課時(shí) 22:Kotlin 內(nèi)存優(yōu)化
內(nèi)聯(lián)函數(shù)(inline)
協(xié)程內(nèi)存管理(結(jié)構(gòu)化并發(fā))
避免 object 單例泄漏
?? 模塊 5:網(wǎng)絡(luò) & 存儲(chǔ)優(yōu)化(4 課時(shí))
課時(shí) 23:網(wǎng)絡(luò)優(yōu)化
HTTP/2 與 QUIC 協(xié)議
連接復(fù)用(OkHttp ConnectionPool)
數(shù)據(jù)壓縮(Gzip、Protobuf)
課時(shí) 24:數(shù)據(jù)庫(kù)優(yōu)化
Room 性能優(yōu)化(索引、事務(wù))
SQLite 調(diào)優(yōu)(PRAGMA 優(yōu)化)
數(shù)據(jù)庫(kù)加密(SQLCipher)性能影響
課時(shí) 25:文件存儲(chǔ)優(yōu)化
mmap 優(yōu)化 SharedPreferences
序列化優(yōu)化(JSON vs. Protobuf)
文件鎖優(yōu)化(FileLock)
課時(shí) 26:SharedPreferences 優(yōu)化
apply() vs. commit()
數(shù)據(jù)分片(避免大文件)
MMKV 替代方案
?? 模塊 6:高級(jí)優(yōu)化(4 課時(shí))
課時(shí) 27:?jiǎn)?dòng)優(yōu)化
冷啟動(dòng) vs. 熱啟動(dòng)
App Startup 庫(kù)
異步初始化(IntentService、Coroutine)
課時(shí) 28:電量?jī)?yōu)化
JobScheduler vs. WorkManager
AlarmManager 優(yōu)化
Battery Historian 分析
課時(shí) 29:包體積優(yōu)化
資源混淆(AndResGuard)
代碼混淆(R8 優(yōu)化)
動(dòng)態(tài)加載(App Bundle)
課時(shí) 30:性能監(jiān)控 & APM
線上監(jiān)控(FPS、Crash、ANR)
字節(jié)碼插樁(ASM)
自研 APM 系統(tǒng)架構(gòu)