在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 調(diào)試
配置
Generated API
轉(zhuǎn)換
選項(xiàng)
過渡效果
關(guān)于Glide
緩存
調(diào)試
目標(biāo)
占位符
下載和設(shè)置
入門指南

調(diào)試

本地日志

如果您已經(jīng)連接上設(shè)備了,您可以使用adb logcat或者IDE查看一些日志信息。您可以使用adb shell setprop log.tag. <VERBOSE|DEBUG>使用任何標(biāo)簽啟用日志信息。VERBOSE日志信息往往更詳細(xì),包含更多有用的信息。根據(jù)標(biāo)簽,您可以嘗試VERBOSE和DEBUG,看哪些提供最佳的日志信息。

請求錯誤

等級最高同時也最容易理解的日志信息是使用Glide標(biāo)簽。Glide標(biāo)簽會同時提供成功跟失敗的請求信息以及不同級別的信息,具體取決于日志級別。VERBOSE應(yīng)該用來顯示成功的請求。DEBUG可以用來顯示錯誤的細(xì)節(jié)信息。

您可以使用setLogLevel(int)來控制程序顯示Glide日志的詳細(xì)程度。例如,setLogLevel允許您在開發(fā)時啟用更詳細(xì)日志,但在發(fā)行版中關(guān)閉。

意外的緩存丟失

Engine標(biāo)簽提供關(guān)于請求將如何被響應(yīng)的細(xì)節(jié),包括使用內(nèi)存緩存鍵存儲相應(yīng)的資源。當(dāng)您嘗試調(diào)試一個存放在內(nèi)存中圖像為什么不能在另一個地方使用時,您可以使用Engine日志直接比較緩存鍵是否相同。

對于每個請求,Engine標(biāo)簽將記錄請求將從緩存,有效的資源,已存在的負(fù)載或者新的負(fù)載中完成。緩存意味著資源沒有被使用,卻在內(nèi)存中存在。有效的資源意味著資源被其他目標(biāo)使用,尤其是在View中。已存在的負(fù)載意味著資源在內(nèi)存中不可用,但其他目標(biāo)之前請求過該資源并且正在被加載。最后,一個新的負(fù)載意味著資源不在內(nèi)存中也沒有加載過,所以現(xiàn)在是新的負(fù)載請求。

缺少圖像和本地日志

在某種情況下,您也許會看到圖像沒有被加載,并且沒有Glide日志或沒有請求的Engine日志。有幾種可能的原因。

沒有開始請求

請確保您的請求有調(diào)用into或者submit方法。如果您沒有調(diào)用過其中任何一個方法,您是無法使用Glide開啟請求的。

缺少尺寸

如果您確定您確實(shí)調(diào)用了into或者submit方法,仍然看不到日志信息。那最合理的解釋是Glide不能確定您嘗試加載的View或者目標(biāo)的尺寸。

自定義Target

如果您使用自定義Target,確保您實(shí)現(xiàn)了getSize方法并且調(diào)用非0的寬度跟高度的回調(diào)或者繼承Target的子類,如:ViewTarget,它會幫您實(shí)現(xiàn)getSize方法。

視圖

如果您只是加載資源到視圖,那最合理的解釋是您的視圖不是通過布局也不會給予0的寬度或高度。如果視圖的可見性被設(shè)置為View.GONE或者視圖沒有依附的父元素,那么將不會被顯示。如果視圖的父元素的寬度跟高度被設(shè)置成wrap_content或者match_parent中的某一個或組合,那么視圖可能接收到無效的或者是0的寬度或高度。您可以嘗試給您的視圖固定的非0的尺寸或者使用Glide的override(int, int) API給每個請求傳遞指定的尺寸。

請求監(jiān)聽和自定義日志

如果要以編程的方式跟蹤錯誤日志和成功的負(fù)載,請跟蹤應(yīng)用程序中圖像占用緩存的比率或者更好的控制本地日志。您可以使用RequestListener接口。RequestListener可以利用RequestBuilder#listener()添加到一個單獨(dú)的負(fù)載中。例如:

Glide.with(fragment)
   .load(url)
   .listener(new RequestListener() {
       @Override
       boolean onLoadFailed(@Nullable GlideException e, Object model,
           Target<R> target, boolean isFirstResource) {
         // Log errors here.
       }

       @Override
       boolean onResourceReady(R resource, Object model, Target<R> target,
           DataSource dataSource, boolean isFirstResource) {
         // Log successes here or use DataSource to keep track of cache hits and misses.
       }
    })
    .into(imageView);

為了減少對象分配,您可以在多個負(fù)載中重用RequestListener對象。

上一篇:Generated API下一篇:關(guān)于Glide