提出问题:
Android可以保留在内存中的应用越多,用户在其应用之间切换的速度就越快。
作为我工作的一部分,我遇到了Android应用程序中的内存泄漏问题,他们大部分时间都是由于同样的错误:
“保持对Context的长期引用”
例如:内部类和它们对外部类的隐式引用是很危险的!
解决方案:
为了避免上下文Context相关的内存泄漏,请记住以下内容:
- 不要长期引用context-activity(对activity的引用应该与activity本身具有相同的生命周期);
- 尝试使用context-application而不是context-activity,你可以通过调用Context.getApplicationContext()或者Activity.getApplication()来获得它 ;
- 避免activity中的非静态内部类,如果你不能控制它们的生命周期,请使用静态内部类,并对内部activity做一个弱引用。使用WeakReference进行包裹;
- 垃圾收集器gc不是防止内存泄漏的保险 ;
- 借助开源项目leakcanary检测自己项目中是否存在内存泄露;