Glide入門教程——12.異常: 調(diào)試和報錯處理

Glide — 異常: 調(diào)試和報錯處理

原文:Exceptions: Debugging and Error Handling
作者:Norman Peitek
翻譯:Dexter0218

介紹完了Glide各種概念,我們要轉(zhuǎn)移到一個開發(fā)話題上。在這篇文章中,我們將展示給你一些有用的方法去debug你在使用Glide過程中所遇到的問題栅哀。

Glide 系列概覽

  1. 入門簡介
  2. 高級加載
  3. 適配器(ListView, GridView)
  4. 占位圖& 淡入淡出動畫
  5. 圖片大小 & 縮放
  6. 播放GIF & 視頻
  7. 緩存基礎(chǔ)
  8. 請求優(yōu)先級
  9. 縮略圖
  10. 回調(diào):定制view中使用SimpleTarget和ViewTarget
  11. 通知欄和桌面小控件的圖片加載
  12. 異常: 調(diào)試和報錯處理
  13. 自定義變換
  14. 用animate()定制動畫
  15. 整合網(wǎng)絡(luò)協(xié)議棧
  16. 用Modules定制Glide
  17. Glide Module 案例: 接受自簽名HTTPS證書
  18. Glide Module 案例: 自定義緩存
  19. Glide Module 案例: 通過加載自定義大小圖片優(yōu)化
  20. 動態(tài)使用 Model Loaders
  21. 如何旋轉(zhuǎn)圖片
  22. 系列綜述

本地調(diào)試

Glide的常規(guī)請求里提供了一個方法設(shè)置Log的層級蒸健。不幸地是究西,你沒法輕易在產(chǎn)品使用中輕易獲取货葬。但,也有一個很簡單的方法獲得Glide的調(diào)試log蘸炸。你只要通過adb shell,打開terminal尖奔,然后使用下面的命令行:

adb shell setprop log.tag.GenericRequest DEBUG  

最后一部分DEBUG來自標(biāo)準(zhǔn)Android的log常量搭儒。因此,作為參數(shù)的遞增優(yōu)先級的選項如下:

  • VERBOSE
  • DEBUG
  • INFO
  • WARN
  • ERROR

當(dāng)圖片不存在時提茁,會輸出下面的日志:

io.futurestud.tutorials.glide D/GenericRequest: load failed  
io.futurestud.tutorials.glide D/GenericRequest: java.io.IOException: Request failed 404: Not Found  
...

你已經(jīng)想到了淹禾,這只能在你有個真機連接到電腦上,并且正在調(diào)試你的應(yīng)用時才能用茴扁。為了在你的app中生成日志铃岔,你需要另外一個不同的方式。方案又是用回調(diào)峭火,我們會在后續(xù)的小節(jié)中介紹毁习。

基本的異常日志

Glide不提供直接獲取常規(guī)請求的日志智嚷,但是你可以在請求出錯時抓取異常的日志。例如纺且,如果圖片不存在盏道,Glide會(靜靜地)拋出一個異常,并顯示出你.erroer()里指定的圖片隆檀。如果你明確想要知道異常摇天,創(chuàng)建一個listener,然后傳遞給Glide的.listener()方法。

首先恐仑,創(chuàng)建一個listener作為一個字段對象泉坐,避免被垃圾回收:

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方法中,你可以抓取問題裳仆,并決定你需要做什么腕让,比如記錄日志。如果Glide應(yīng)當(dāng)處理這個后果歧斟,比如顯示一個出錯占位圖纯丸,在onException方法中返回false是很重要的。

你可以在Glide中的構(gòu)造方法里設(shè)置listener:

Glide  
    .with( context )
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .listener( requestListener )
    .error( R.drawable.cupcake )
    .into( imageViewPlaceholder );

.error()是否設(shè)置不影響日志正常工作静袖。但只有在listeneronException方法里返回false觉鼻,R.drawable.cupcake才會顯示出來。

展望

這篇文章中队橙,你已經(jīng)學(xué)會了在使用Glide過程中如何debug和記錄異常坠陈。根據(jù)你的需求選擇適合你的方法,如果有疑問捐康,可以在評論中提出仇矾!

在下一篇文章中,我們會繼續(xù)更高級的主題解总。下次是自定義變換贮匕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市花枫,隨后出現(xiàn)的幾起案子刻盐,更是在濱河造成了極大的恐慌,老刑警劉巖乌昔,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隙疚,死亡現(xiàn)場離奇詭異,居然都是意外死亡磕道,警方通過查閱死者的電腦和手機供屉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伶丐,你說我怎么就攤上這事悼做。” “怎么了哗魂?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵肛走,是天一觀的道長。 經(jīng)常有香客問我录别,道長朽色,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任组题,我火速辦了婚禮葫男,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘崔列。我一直安慰自己梢褐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布赵讯。 她就那樣靜靜地躺著盈咳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪边翼。 梳的紋絲不亂的頭發(fā)上鱼响,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音组底,去河邊找鬼热押。 笑死,一個胖子當(dāng)著我的面吹牛斤寇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拥褂,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼娘锁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饺鹃?” 一聲冷哼從身側(cè)響起莫秆,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悔详,沒想到半個月后镊屎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡茄螃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年缝驳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡用狱,死狀恐怖运怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夏伊,我是刑警寧澤摇展,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站溺忧,受9級特大地震影響咏连,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲁森,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一祟滴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刀森,春花似錦踱启、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榜晦,卻和暖如春冠蒋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乾胶。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工抖剿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人识窿。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓斩郎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喻频。 傳聞我的和親對象是個殘疾皇子缩宜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,771評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)甥温,斷路器锻煌,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 昨天收拾屋子的時候找出很多玩具小兵。那是我童年時最愛的玩具姻蚓。 童年時經(jīng)常和哥哥玩“打仗”的游戲:我們兩個是司令官宋梧,...
    小羽回憶鋪閱讀 530評論 0 1
  • 在iOS10之后需要在Info.plist中,添加新的字段獲取權(quán)限狰挡,否則在iOS10上運行會導(dǎo)致崩潰捂龄。下面是一些常...
    mydisc1閱讀 200評論 0 0
  • 每個人每件事都不是獨立存在的释涛,你和周圍的一花一草,一人一物息息相關(guān)跺讯!組成一個世界枢贿,而這個世界又包括你,你又是另外一...
    洛美的瑪雅簡書閱讀 496評論 0 2