Android 内存泄漏总结
2016-02-03 14:47
381 查看
总结
对 Activity 等组件的引用应该控制在 Activity 的生命周期之内; 如果不能就考虑使用 getApplicationContext 或者 getApplication,以避免 Activity 被外部长生命周期的对象引用而泄露。尽量不要在静态变量或者静态内部类中使用非静态外部成员变量(包括context ),即使要使用,也要考虑适时把外部成员变量置空;也可以在内部类中使用弱引用来引用外部类的变量。
对于生命周期比Activity长的内部类对象,并且内部类中使用了外部类的成员变量,可以这样做避免内存泄漏:
将内部类改为静态内部类
静态内部类中使用弱引用来引用外部类的成员变量
Handler 的持有的引用对象最好使用弱引用,资源释放时也可以清空 Handler 里面的消息。比如在 Activity onStop 或者 onDestroy 的时候,取消掉该 Handler 对象的 Message和 Runnable.
在 Java 的实现过程中,也要考虑其对象释放,最好的方法是在不使用某对象时,显式地将此对象赋值为 null,比如使用完Bitmap 后先调用 recycle(),再赋为null,清空对图片等资源有直接引用或者间接引用的数组(使用 array.clear() ; array = null)等,最好遵循谁创建谁释放的原则。
正确关闭资源,对于使用了BraodcastReceiver,ContentObserver,File,游标 Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销。
保持对对象生命周期的敏感,特别注意单例、静态对象、全局性集合等的生命周期。
相关文章推荐
- Android开发之查找本机的图片、视频、音乐、其他类别文件
- Android studio 下的robotium自动化测试和持续集成
- 基于Fragment的Android前台服务框架
- 十指相扣:陪binderIPC度过的漫长岁月(1)
- android ListView 基本常识一些个数的方法
- 树莓派3(全志A20)Android固件编译
- Android 阴影学习
- Android 高仿 iOS 的省、市、区三级联动效果库(含数据,可直接用到项目中)
- 关于Android 的内存泄露及分析(转)
- android使用中一些问题,备忘
- 阅读《Android 从入门到精通》(22)——网格视图
- Android Jni开发之自动化编译添加jni代码提示
- 【MIG专项测试组】如何量化Android应用的“卡”?—流畅度原理&定义篇
- android 视频下载
- Android相机开发那些坑
- Android 第七天(下午)
- android 图标如何闪烁
- Android系统下的Dex加载
- Android error
- android屏幕适配,自动生成不同的dimens.xml详解