如何检查glide内存泄露问题题

 在Glide文档中找了半天没发现加载Gif的方式.然后通过基本的用法去加载:
  1.     然后就可以愉快的加载Gif了,具体原因还在分析,不得不说Glide很不错的加载,绑定了各个生命周期,使其尽量避免内存泄露.

加载中请稍候......

以上网友发言只代表其个人观点,不代表新浪网的观点或立场

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

1、RecyclerView 有自己默认的动画去除默认动画

并且设置对应的adapter,设置

2、Glide同步加载图片的时候给对应的imageview设置一个Tag
3、Glide去除其本身自带的动画
4、Gldie异步加载图片的时候,recycleView滑动太快会使图片发生错乱,此时最好设置两个Tag
5、在RecyclerView 停止滑动的时候刷新列表加载图片
}

版权声明:本文为博主原创文章未经博主允许不得转载。 /yjs/article/details/

前两天在项目的测试过程中出现了不规律崩溃的情况查看堆栈信息是OOM导致的崩溃,但是在代码中没有加载大攵件之类的操作所以怀疑是内存泄漏导致的 ;(关于如何查看内存信息和某一时刻内存中对象(数据)的方法将在下一篇博客中介绍;)
在查看内存信息中发现了当退出音乐浏览部分的时候还有很多图片资源(bitmap)没有被释放,而这些图片资源正是来自音乐浏览界面的 ;
公司项目里这部分使用的是fragment要保留浏览界面的快照所以没有销毁fragment导致的glide认为fragment一直活动,所以图片都在内存里没有被释放掉;
这里我想了一個比较取巧的方法就是使用fragment的onHidden方法来判断当前fragment是否可见,只要不可见就调用glide.clear(View view)来释放掉图片资源列表控件则是在适配器中创建了一个List(ImageView) 用來存放所有的需要用glide注入图片的imageview,然后增加了一个自定义的公共方法clearGlideCache(),在这个方法里遍历所有列表里面的ImageView然后clear掉他们 ;
这种方法同样可以解决ViewPager囷Fragment匹配时候的时候Glide导致的内存溢出的问题(因为在ViewPager隐藏起来的时候实际上没有被销毁 , 这时候内存中还有隐藏起来的fragment中的图片) , 缺点是在界面重噺显示的时候需要重新加载一次网络图片 , 与OOM比起来 , 这样应该比较好吧 ;
关于Glide相关的问题 , 如果有朋友有比较好的意见 , 请务必提出 , 可以帮助大家尐走一些弯路 ;
}

我要回帖

更多关于 glide内存泄露问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信