猿规 2022-09-21 12:38 采纳率: 66.7%
浏览 60
已结题

在app首页的Fragment中,怎么回收自定义监听?

在app首页的Fragment中,怎么回收自定义监听?
因为是首页,所以不像子页面有完整的销毁生命周期,而且感觉也不能回收了监听,但是在使用过程中首页的监听会导致内存泄漏
所以不清楚这种情况下怎么去保持一个内存不泄漏呢?

img


监听位于Adapter中使用,没有一层层传递,直接设置在了一个单例的辅助类中,然后在viewholder中获取使用

img

  • 写回答

3条回答 默认 最新

  • MakerGaoGao 2022-09-22 01:39
    关注

    监听不要匿名内部类,会持有外部引用。
    将监听定义成一个内部类,外部引用Activity采用弱引用方式

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    猿规 2022-09-22 01:55

    补充了一下问题,这边监听是设置在了一个辅助类中,位于adapter下,不涉及activity引用,如果改成弱引用被回收了就新建一个监听设置?

    回复
    MakerGaoGao 回复 猿规 2022-09-22 02:24

    不需要了,因为如果被回收了证明除了你这个其他业务已经不需要这个对象了,你的业务实际上也已经结束了。
    但是按你这种情况的话,来个简单粗暴的静态内部类也可以解决吧

    回复
    MakerGaoGao 回复 MakerGaoGao 2022-09-22 02:28

    你的问题出在单例上了,在设置adapter的时候引用了外部的Fragment,然后引用到了单例类中,单例类一直存在,所以出现了内存泄露,简单粗暴,设置Adapter的时候不要new匿名内部类,直接写个静态内部类解决

    回复
    展开全部5条评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月1日
  • 已采纳回答 9月24日
  • 修改了问题 9月22日
  • 创建了问题 9月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部