首页
›
移动端与Android应用开发
›
034-Android架构组件内存泄漏
›
《LiveData未移除Observer的泄漏案例》
VIP20
本课程属于:034-Android架构组件内存泄漏
移动端与Android应用开发 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
LiveData未移除Observer的泄漏案例
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
泄漏现象识别
内存持续增长 · GC频繁 · OOM风险
泄漏现象识别
内存持续增长
02
泄漏证据采集
使用Android Studio P… · Memory Analyzer (M… · LeakCanary抓取堆转储
泄漏证据采集
Android
03
Observer与LifecycleOwner绑定关系
LifecycleOwner销毁时自…
Observer
LifecycleOwn…
04
常见泄漏原因
Activity中匿名内部类Obse… · Fragment生命周期与View分…
常见泄漏原因
Activity
05
泄漏故障树构建
根节点为“LiveData Obse… · 分支包含“LifecycleOwne… · 手动addObserver未remo…
泄漏故障树构建
LiveData
06
堆转储分析步骤
打开hprof文件 · 搜索观察者类名 · 查找强引用链到Activity
堆转储分析步骤
hprof
07
判断规则一
Activity onDestroy…
判断规则一
Activity
08
判断规则二
使用LeakCanary的泄漏跟踪路…
判断规则二
LeakCanary
09
修复动作一
使用observe()而非obser… · 确保LifecycleOwner参与…
修复动作一
observe
10
修复动作二
必须手动removeObserver…
修复动作二
removeObserv…
11
修复动作三
在Activity/Fragment…
修复动作三
Activity/Fra…
12
修复动作四
使用LifecycleEventOb…
修复动作四
LifecycleEve…
13
复测验证
编写单元测试模拟Activity销毁…
复测验证
Activity
14
复测清单
检查所有LiveData注册点 · 确认每个observe()传入Lif…
复测清单
LiveData
15
预防方案一
代码检查工具规则(Detekt/Sp…
预防方案一
Detekt/Sp
16
预防方案二
自定义LifecycleObserv…
预防方案二
LifecycleObs…
17
预防方案三
使用LiveDataScope或Fl…
预防方案三
LiveDataScop…
18
案例分析一
Fragment嵌套ViewPage…
案例分析一
Fragment
19
案例分析二
Retrofit回调中更新LiveD…
案例分析二
Retrofit
20
案例分析三
ViewModel中持有LiveDa…
案例分析三
ViewModel
21
排查工具链
从LeakCanary通知到MAT确…
排查工具链
LeakCanary
22
日志埋点
在Observer回调中打印堆栈 · 辅助定位注册点
日志埋点
Observer
23
内存对比测试
修复前后同一页面的内存占用对比图
内存对比测试
修复前后同一页面…
24
排查流程图
耗时步骤与决策点(如“是否obser…
排查流程图
obser
25
常见误区一
认为LiveData会自动清理所有O… · 实际仅在LifecycleOwner…
常见误区一
LiveData
26
常见误区二
在非UI线程更新LiveData后忘…
常见误区二
UI
27
常见误区三
Java匿名类隐式持有外部Activ…
常见误区三
Java
28
静态工具类检测
使用hprof解析脚本批量搜索未释放…
静态工具类检测
hprof
29
团队规范
代码审查checklist中增加Li…
团队规范
checklist
30
预防方案四
引入生命周期感知的LiveData扩…
预防方案四
LiveData
所属VIP或分类
同VIP:Android-Profiler堆转储分析技巧
同VIP:BroadcastReceiver注册泄漏诊断与修复
同VIP:CI流水线集成LeakCanary实践