针对 长生命周期对象(如单例)持有短生命周期引用(如Activity Context)导致的内存泄漏,核心解决方案是 正确选择上下文类型 并 避免强引用绑定。以下从 原理分析、典型场景、解决方案、最佳实践 四个维度提供系统化方案:通过以下方案,可彻底避免因上下文生命周期不匹配导致的内存泄漏,确保单例/静态变量仅持有安全的长生命周期上下文(如Application),或通过弱引用合法关联短生命周期组件,提升应用内存管理的健壮性。
一、核心原理:上下文生命周期不匹配
1. 上下文类型与生命周期
上下文类型 | 生命周期 | 适用场景 | 风险点 |
---|---|---|---|
Activity | 短生命周期(随Activity销毁) | UI相关操作(启动Activity、Toast) | 被长生命周期对象持有导致泄漏 |
Application | 长生命周期(随应用进程销毁) | 全局非UI操作(数据库、网络) | 安全,无泄漏风险 |