Skip to content
阅读进度

Context 为什么容易引发内存泄漏? ​

返回 性能与稳定性 目录

标准回答 ​

Activity Context 与页面生命周期关联。单例或长期任务持有它,可能让页面及整棵 View 树在退出后仍然可达。长生命周期对象在适用时使用 Application Context,确实需要窗口和主题的 UI 操作则使用对应页面 Context。

机制解释 ​

不是把所有 Context 都替换成 Application 就结束了。Dialog、主题相关布局和窗口操作具有自己的要求;SDK 应区分纯业务能力和 UI 能力,避免为通信保存整个 Activity。

延伸追问 ​

WeakReference 能彻底修复吗?不能。它不能替代取消任务、移除监听、关闭连接等资源管理;对象随时可能消失,也会让代码更复杂。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。