Glide 入门到精通之十一 ——异常:调试和错误处理
2016-03-23 18:28
766 查看
http://mrfu.me/2016/02/28/Glide_Exceptions-_Debugging_and_Error_Handling/
Glide 的 GeneralRequest 类提供了一个方法去设置 log 的级别。不幸的是,在生产过程中,使用这个类并不容易。然而,有一个非常简单的方法去获得 Glide 的调试日志。你所要做的就是通过 adb 的 shell 来激活。打开你的终端,使用以下命令:
最后一个 DEBUG 来自标准的 Android 日志常量。因此,你你可以选择 debug 的优先级:
VERBOSE
DEBUG
INFO
WARN
ERROR
输出,万一图像不存在,在会像这样:
可能你已猜到,这只当你的设备能接收实际的值并且你正在开发和测试你的 App。为了记录在生产(发布版本)中的 App,你将需要用一个不同的方式。答案是,依然用回调,我们在下一节来探讨。
如果你明确想要知道这个异常,创建一个监听并传
首先,创建一个监听作为一个字段对象去避免垃圾回收(注:之前说过不要用匿名内部类的形式):
在 onException 方法中, 你可以捕获错误,并且你可以决定要做什么,比如,打个 log。重要的是如果 Glide 要在后续处理的话,如显示一个错误的占位符等情况的话,你需要返回了 false 在 onException 方法中。
你可以设置一个监听在 Glide 建造者中:
要使日志工作正常的话,
在下篇博客中,我们会走向更加高级的话题。下周的话题的自定义转化!
Glide 的 GeneralRequest 类提供了一个方法去设置 log 的级别。不幸的是,在生产过程中,使用这个类并不容易。然而,有一个非常简单的方法去获得 Glide 的调试日志。你所要做的就是通过 adb 的 shell 来激活。打开你的终端,使用以下命令:
adb shell setprop log.tag.GenericRequest DEBUG
最后一个 DEBUG 来自标准的 Android 日志常量。因此,你你可以选择 debug 的优先级:
VERBOSE
DEBUG
INFO
WARN
ERROR
输出,万一图像不存在,在会像这样:
io.futurestud.tutorials.glide D/GenericRequest: load failed io.futurestud.tutorials.glide D/GenericRequest: java.io.IOException: Request failed 404: Not Found ...
可能你已猜到,这只当你的设备能接收实际的值并且你正在开发和测试你的 App。为了记录在生产(发布版本)中的 App,你将需要用一个不同的方式。答案是,依然用回调,我们在下一节来探讨。
常规异常日志记录
Glide 不能直接去访问 GenericRequest 类去设置日志,但万一一些请求出错了你是可以捕获异常的。比如,如果图片不可用,Glide 会(默默地)抛出一个异常,并且显示一个 drawable ,如果你已经指定了.error()的话。
如果你明确想要知道这个异常,创建一个监听并传
.listener()方法到 Glide 的建造者中。
首先,创建一个监听作为一个字段对象去避免垃圾回收(注:之前说过不要用匿名内部类的形式):
private RequestListener<String, GlideDrawable> requestListener = new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { // todo log exception // important to return false so the error placeholder can be placed return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } };
在 onException 方法中, 你可以捕获错误,并且你可以决定要做什么,比如,打个 log。重要的是如果 Glide 要在后续处理的话,如显示一个错误的占位符等情况的话,你需要返回了 false 在 onException 方法中。
你可以设置一个监听在 Glide 建造者中:
Glide .with( context ) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .listener( requestListener ) .error( R.drawable.cupcake ) .into( imageViewPlaceholder );
要使日志工作正常的话,
.error()并不是必须的。然而,如果你在监听的 onException 中返回 false 的话,R.drawable.cupcake 只是显示出来而已。
Outlook
这篇博客中,你已经学习了在 Glide 中通过一些方法去调试和打印异常。根据需要,选一种方式吧。在下篇博客中,我们会走向更加高级的话题。下周的话题的自定义转化!
相关文章推荐
- 第四周 项目二 太乐了
- DRM in Android
- 数据格式化函数
- 南阳题目113-字符串替换
- ElasticSearch 2 (29) - 信息聚合系列之测试驱动
- 韩文歌曲音译
- spoj7258:Lexicographical Substring Search 后缀自动机
- Siteserver-stl:searchOutput(搜索结果)自定义显示样式
- 线程与进程区别
- 使用ObjectMapper 序列化Json
- 终于突破背诗的瓶颈了
- python编辑器pydev安装
- 数组名与数组名取地址的差异
- 访问assets中文件各种文件的方法
- 升级win10后 MarkdownPad 2 无法实时渲染HTML页面问题
- 中介PHP连接前台HTML与数据库MySQL
- 【面试】微信支付一面
- Mysql新建用户和数据库并授权
- 网页元素居中攻略记_(6)图片水平垂直居中
- 网页元素居中攻略记_(6)图片水平垂直居中