本地调试
Glide的常规请求里提供了一个方法设置Log的层级。但你没法在产品使用中轻易获取。但也有一个很简单的方法获得Glide的调试log。你只要通过adb shell,打开terminal,然后使用下面的命令行:
1 | adb shell setprop log.tag.GenericRequest DEBUG |
最后一部分DEBUG来自标准Android的log常量。因此,作为参数的递增优先级的选项如下:
- VERBOSE
- DEBUG
- INFO
- WARN
- ERROR
当图片不存在时,会输出下面的日志:
1 | io.futurestud.tutorials.glide D/GenericRequest: load failed |
这只适用真机连接到电脑上的情况,并且正在调试你的应用时才能使用。为了在app中生成日志,需要另外一个不同的方式。方案是用回调,我们会在后续的小节中介绍。
基本的异常日志
Glide不提供直接获取常规请求的日志,但是你可以在请求出错时抓取异常的日志。例如,如果图片不存在,Glide会(静静地)抛出一个异常,并显示出你.erroer()里指定的图片。如果你明确想要知道异常,创建一个listener,然后传递给Glide的.listener()方法。
首先,创建一个listener作为一个字段对象,避免被垃圾回收:
1 | private RequestListener<String, GlideDrawable> requestListener = new RequestListener<String, GlideDrawable>() { |
在onException方法中,你可以抓取问题,并决定你需要做什么,比如记录日志。如果Glide应当处理这个后果,比如显示一个出错占位图,在onException方法中返回false是很重要的。
你可以在Glide中的构造方法里设置listener:
1 | Glide |
.error()是否设置不影响日志正常工作。但只有在listener的onException方法里返回false,R.drawable.cupcake才会显示出来。
参考资料:
签到钱就到 Glide入门教程——12.异常: 调试和报错处理