码迷,mamicode.com
首页 > 移动开发 > 详细

常见的八种导致 APP 内存泄漏的问题(下)

时间:2017-09-30 00:29:57      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收   频繁   系统   gets   测试品牌   分配   systems   强引用   分享   

百度搜索:小强测试品牌

QQ群:138269539

 

Handlers


同 样的,定义一个匿名的 Runnable 对象并将其提交到 Handler 上也可能导致 activity 泄漏。Runnable 对象间接地引用了定义它的activity 对象,而它会被提交到 Handler 的 MessageQueue 中,如果它在 activity 销毁时还没有被处理,那就会导致 activity 泄漏了。

技术分享

技术分享

Threads


同样的,使用 Thread 和 TimerTask 也可能导致 activity 泄漏

技术分享

技术分享

Timer Tasks


只要它们是通过匿名类创建的,尽管它们在单独的线程被执行,它们也会持有对 activity 的强引用,进而导致内存泄漏

技术分享

技术分享

Sensor Manager


最 后,系统服务可以通过 context.getSystemService 获取,它们负责执行某些后台任务,或者为硬件访问提供接口。如果 context 对象想要在服务内部的事件发生时被通知,那就需要把自己注册到服务的监听器中。然而,这会让服务持有 activity 的引用,如果程序员忘记在 activity 销毁时取消注册,那就会导致 activity 泄漏了。

技术分享

技术分享

现 在,我们展示了八种很容易不经意间就泄漏大量内存的情景。请记住,最坏的情况下,你的 APP 可能会由于大量的内存泄漏而内存耗尽,进而闪退,但它并不总是这样。相反,内存泄漏会消耗大量的内存,但却不至于内存耗尽,这时,APP 会由于内存不够分配而频繁进行垃圾回收。垃圾回收是非常耗时的操作,会导致严重的卡顿。在 activity 内部创建对象时,一定要格外小心,并且要经常测试是否存在内存泄漏。

常见的八种导致 APP 内存泄漏的问题(下)

标签:垃圾回收   频繁   系统   gets   测试品牌   分配   systems   强引用   分享   

原文地址:http://www.cnblogs.com/xqtesting/p/7613139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!