Android App中使用Glide加载图片的教程

2019-12-10 18:06:24于海丽

如果你想禁用log输出,执行:

adb shell setprop log.tag.GenericRequest ERROR

2.调试工作流

Android,Glide,加载图片

为了查看Glide内部引擎是何时、如何加载图片的,你可以启用这些log:

adb shell setprop log.tag.Engine VERBOSE
adb shell setprop log.tag.EngineJob VERBOSE
adb shell setprop log.tag.DecodeJob VERBOSE

启用这些log可以帮助你了解到为什么某些资源没有从内存中加载?为什么从外部url加载要重新下载数据?同时这也有助于了解在磁盘缓存时哪些参数需要配置。启用DecodeJob log还可以帮助你了解自定义变换/解码器/编码器等相关问题。
3.请求监听器
虽然启动调试日志很简单,但前提是你可以访问到设备。为了完善Glide已存在或更复杂的错误日志系统,你可以使用RequestListener类。当加载请求失败时onException()方法就会被调用,并给出造成失败的异常或者null(在解码器无法从它获取到的数据中解码出任何有用的东西时)。你可以通过listener() API为每一个请求添加一个监听器。
确保onException()方法的返回值为false,避免覆盖Glide默认的错误处理(比如加载失败的错误图片占位)。
这里有一个实现快速调试的列子:

// 示例: .listener(new LoggingListener<String, GlideDrawable>()) 
public class LoggingListener<T, R> implements RequestListener<T, R> {
  @Override public boolean onException(Exception e, Object model, Target target, boolean isFirstResource) {
    android.util.Log.d("GLIDE", String.format(Locale.ROOT,
        "onException(%s, %s, %s, %s)", e, model, target, isFirstResource), e);
    return false; 
  } 
  @Override public boolean onResourceReady(Object resource, Object model, Target target, boolean isFromMemoryCache, boolean isFirstResource) {
    android.util.Log.d("GLIDE", String.format(Locale.ROOT,
        "onResourceReady(%s, %s, %s, %s, %s)", resource, model, target, isFromMemoryCache, isFirstResource));
    return false; 
  } 
}