教你避免内存泄露
来源:互联网 发布:大学 知乎 编辑:程序博客网 时间:2024/06/05 15:42
推荐:http://www.cnblogs.com/wangzehuaw/p/5180110.html
总结
对 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内存泄露
- 避免Android内存泄露
- 避免Android内存泄露
- 避免context内存泄露
- 避免内存泄露
- 避免内存泄露
- android避免内存泄露
- Android避免内存泄露
- android避免内存泄露
- 避免Activity内存泄露
- 避免android内存泄露
- js--缓动动画、匀速运动、无缝滚动
- Elevators UVALive
- Javascript 实现城市选择控件
- Git命令大全
- HDU6180(贪心)
- 教你避免内存泄露
- HTTP请求头和响应头
- PHP编程效率的20个要点 (2015-09-25 14:37:49) 转载 ▼ 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,
- Unity Canvas UI line Renderer
- 前端对后台传过来是数组进行重新排序显示
- 【二叉树经典问题】106. Construct Binary Tree from Inorder and Postorder Traversal
- hdu6170(dp)
- spring cloud教程---Eureka
- pl sql