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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/denglusha737/article/details/71279855

     使用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,由于对象存在,将没有传递进去好吗。

     由此问题解决。

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

猜你喜欢

转载自blog.csdn.net/denglusha737/article/details/71279855