Glide填坑指南
一、前言:再优秀的开源库都有坑要填 手上的项目使用的图片加载框架是:Universal-Image-Loader+业务需要定制化的一些代码。Universal-Image-Loader 这个框架是一个非常经典好用的框架,唯一的问题是是作者很久之前就不再更新了。所以综合考虑下,确定使用Glide+封装代替当前的图片加载框架。 二、困惑: 在没有真正使用 Glide 之前,我所看到的文章基本都是赞美这个库的功能强大,加载流畅。然而,当我用上了以后,才发现并不完美。遇到了不少的坑,需要自己填。 2.1 Glide 配合 OKHttp 使用的坑: 需要在Gradle中引入: compile “com.github.bumptech.glide:glide:3.7.0” compile “com.github.bumptech.glide:okhttp3-integration:1.4.0@aar” 这里就有一个坑,如果你用到自定义的 GlideModule,这里的可能会失效,被com.github.bumptech.glide:okhttp3-integration:1.4.0@aar默认的替换 解决方法是升级版本号: compile “com.github.bumptech.glide:okhttp3-integration:1.4.0@aar” -》 compile “com.github.bumptech.glide:okhttp3-integration:1.5.0” 注意,没有@arr 2.2 OKHttpClient 超时设置导致图片无法加载坑: 因为Glide本身只负责图片加载,网络请求图片数据由网络框架决定。网络请求一般会有超时的问题,坑的是OKHttp默认的超时时间太短了,如果不修改,网络状态比较差 就很容易请求超时,图片自然就加载不出来。我设置的参数是60,60,30这个可以自己根据实际情况确定。 `//这个是源码里面的,默认超时时间,都是10s,10000ms connectTimeout = 10_000; readTimeout = 10_000; writeTimeout = 10_000; //手动设置超时时间 OkHttpClient client=new OkHttpClient.Builder() .connectTimeout(HTTP_CONNECT_TIMEOUT, TimeUnit.SECONDS) .readTimeout(HTTP_READ_TIMEOUT, TimeUnit.SECONDS) .writeTimeout(HTTP_WRITE_TIMEOUT, TimeUnit.SECONDS) .build;` 2.3 Glide 查看 log 的坑: 如果你使用 Glide 经常出现图片加载不出来或者加载有问题,你需要查看 Glide 本身的 log,不过这个必须通过 adb 命令开启,详情百度,需要注意如果是请求图片问题,关注请求的 log,图片加载||转换的问题,关注图片加载||转换的log。 ...