zoukankan      html  css  js  c++  java
  • Glide加载图片问题记录

    Glide加载图片相比于Picasso而言性能较好,又比Fresco轻巧,而且又支持加载gif动图,是Google 推荐、专注平滑的滚动、简单易用、可扩展的一款图片加载框架。但是使用时还是会遇到一些问题。

    1、同时和RoundedImageView使用时,又恰巧RoundedImageView设置了圆角或者圆形,那么在很多手机上会出现,开始有圆角,滑动过去再返回时,圆角消失了。所以加载圆形时还是配合GlideCircleTransform使用比较稳妥。

    2、我们在加载的时候一般会设置占位符 ,我们会加一个placeholder (loadingImage)如下

    Glide.with(mContext).load(path).placeholder(loadingImage).error(errorImageView).into(mImageView);
    

      但是会发现一直显示占位符的图片,不显示path 的路径, 这个原因应该是缓存问题。只要加上dontAnimate() 或者把Placeholder (loadingImage)的loadingimage 换成mImageview.getdrawable如下:

    Glide.with(mContext).load(path).placeholder(loadingImage).dontAnimate().error(errorImageView).into(mImageView);
    

      

    3、加载gif时,不可以配合使用RoundedImageView,否则gif只能显示成图片。

    还有,敲重点!!!在性能比较好的新手机上,可以正常的流畅的播放 但是在性能比较差的旧手机就不行了 有很明显的卡顿现象。

    然后百度找原因:glide gif 卡 发现大部分都是以 .diskCacheStrategy(DiskCacheStrategy.SOURCE) 就解决了,但是有的手机加上还是mi有用啊。 So,无奈。glide在除了gif加载外适用还是比较好的。

    4、友盟上经常报出很多关于Glide的崩溃,如下

    You cannot start a load for a destroyed activity
    at com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed(RequestManagerRetriever.java:134)
    at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:125)
    at com.bumptech.glide.Glide.with(Glide.java:641)
    

      究其原因,因为Glide是一个网络请求, 会在子线程中进行网络请求,我刚进入程序,Glide还正在子线程中请求数据,这是我就把MainActivity干掉了(onDestroy),Glide没有提前中止请求,所以就崩溃了呀。所以在使用之前还是先加个判断吧:

    if (context != null) {
         Glide.with(context).load(url).error(default_image).crossFade().into(imageView);
    } else {
         Log.e(TAG, "Picture loading failed,context is null");
    }

    所以,使用Glide请注意完美规避以上坑。 

    By LiYing

  • 相关阅读:
    Jquery同步载入数据
    fireEvent方法
    条件判断问题,不太清楚有什么区别!
    Request.QueryString,Request.Form与JavaScript中模态窗口传参
    SQL求百分比
    event.srcElement
    判断输入信息为数值类型
    SQL 表变量,临时表
    读写二进制文件
    串口通信
  • 原文地址:https://www.cnblogs.com/widgetbox/p/8590444.html
Copyright © 2011-2022 走看看