内存泄漏的优化分为两个方面
一方面:开发过程中避免写出有内存泄漏的代码 。
另一方面:通过一些分析工具比如MAT来找出潜在的内存泄露从而解决
场景1:静态变量导致的内存泄漏
场景2:单例模式导致的内存泄漏
这个不容小视。
接着让Activity实现 OnDataArrivedListener接口,并注册监听 。如下
上面的代码由于缺少注册的操作所以会引起泄漏, 原因 Activityde 对象被单例模式的TestManager所持有,而单例模式的特点是其生命周期和Application保持一致,所以Activity对象不能及时释放。
场景3:属性动画导致的内存泄漏
Google在 Android 3.0开始,提供了属性动画,动画中有一类是无限循环播放的动画。加入没有在Acitvity的onDestory中去停止动画,那么 动画会一直播放下去,,尽管无法在界面上看到动画效果了,而且这个时候的Activity的view会被动画持有,而view又持有Acitvity.最终Acitvity无法释放,解决办法:就是在Activity中的onDestory中调用animator.cancel()来停止动画。
代码在这里就不列举了
其实,内存泄漏的地方还有很多,例如,I/O操作的时候,没有及时关流等等。希望大家细心多思考避免各种各样的错误。