Android性能优化——内存泄漏优化

内存泄漏的优化分为两个方面
一方面:开发过程中避免写出有内存泄漏的代码 。
另一方面:通过一些分析工具比如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操作的时候,没有及时关流等等。希望大家细心多思考避免各种各样的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值