栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

内存泄漏(一)MVP模式中的内存泄漏以及解决方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

内存泄漏(一)MVP模式中的内存泄漏以及解决方案

  • MVP模式为什么会存在内存泄漏的隐患?

     当用户按返回键时,页面Activity退出,如果Model在子线程上执行耗时任务,还没有结束,Model持有Presenter的引用,Presenter持有Activity的引用。那么这个Activity对象就没有办法被回收。

  • 怎么解决这个内存泄漏?

     在Activity的onDestroy方法中,通过Presenter间接将Model中的耗时任务取消,然后将Presenter和Model置空。

  • 既然这样可以解决内存泄漏,为什么还要用弱引用(也有代码中用软引用)?

      因为onDestroy方法不一定立即执行,有可能主线程有大量的任务要处理,来不及执行onDestroy()方法。在此期间,如果GC触发,Activity对象还是无法被回收。而通过弱引用,将Activity对象转换为弱可达对象,GC一旦运行,不管内存是否充足,都会回收弱可达对象。从而解决内存泄漏。
      关于onDestroy()没有立刻执行,详细的原因参考:深入分析Android中Activity的onStop和onDestroy()回调延时及延时10s的问题。关于弱可达,网上许多解释都是不准确的,建议参考:(一)Java 中的引用类型、对象的可达性以及回收处理。

    56赞:Android 开发:浅谈 MVP 模式应用与内存泄漏

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号