Glide异常:You cannot load start a load for a destory activity

     使用glide加载图片,在一个Activity中使用了glide加载图片后,首次进入页面显示正常,退出二次进入崩溃,直接报参数异常:You cannot  start a load for on a destory activity。glide是统一封装好的,在其他页面都正常显示,查看了代码,也没发现问题。

    网上找了资料,给出了三个解答:

       1.将glide.with(context)中的context 改成application。我试了下,确实可以解决问题,本来就是context的问题,直接不用了,一般都能解决问题,但是这样glide就无法与context同步生命周期,不利于资源释放。

       2.确定glide加载图片在主线程中,子线程时使用application。

       3.手动在activity销毁时,取消glide请求。glide.with(context).pauserequest.

     

      经测试,项目中第二三种方法都不好使,还得自己认真研究下,还别说,还真发现了猫腻。

     项目中在Activity里,创建了一个静态实例,将context传入,然后在该实例中调用了glide方法加载图片。看到这里,可能大家也发现问题了,静态实例持有了context后不会释放的(这是典型的内存泄漏问题)。二次进入页面的时候,该实例没有回收,context也没有回收,调用glide时就会发现该context已被销毁了。至于新的context,由于对象存在,将没有传递进去好吗。

     由此问题解决。

     后记:开发中很多问题都是由我们自身代码造成的,务必细致再细致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值