欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何解決Glide緩存key的問(wèn)題

這篇文章主要為大家展示了“如何解決Glide緩存key的問(wèn)題”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何解決Glide緩存key的問(wèn)題”這篇文章吧。

創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、網(wǎng)站制作與策劃設(shè)計(jì),昆都侖網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:昆都侖等地區(qū)。昆都侖做網(wǎng)站價(jià)格咨詢:028-86922220

最近項(xiàng)目里面有個(gè)地方是在前面用glide加載圖片后,后面再另外一個(gè)地方加載相同圖片時(shí)沒(méi)有復(fù)用glide的緩存,而是自己另外又重新緩存了一套。

查找后發(fā)現(xiàn)問(wèn)題是glide緩存的key不一致的問(wèn)題。

從key的生成可以看到和很多參數(shù)有關(guān),逐一排查后,發(fā)現(xiàn)了width和height還有id不一樣。這3個(gè)是項(xiàng)目外面?zhèn)鬟M(jìn)來(lái)的。

EngineKey key = keyFactory.buildKey(id, signature, width, height, loadProvider.getCacheDecoder(),
        loadProvider.getSourceDecoder(), transformation, loadProvider.getEncoder(),
        transcoder, loadProvider.getSourceEncoder());

key的作用大概是通過(guò)下面三步里面去找數(shù)據(jù)

如果都為null,就會(huì)進(jìn)入函數(shù)最后邊的開(kāi)線程去decode(相當(dāng)于緩存沒(méi)找到,準(zhǔn)備重新加載數(shù)據(jù)吧)

EngineJob engineJob = engineJobFactory.build(key, isMemoryCacheable);
    DecodeJob<T, Z, R> decodeJob = new DecodeJob<T, Z, R>(key, width, height, fetcher, loadProvider, transformation,
        transcoder, diskCacheProvider, diskCacheStrategy, priority);
    EngineRunnable runnable = new EngineRunnable(engineJob, decodeJob, priority);
    jobs.put(key, engineJob);
    engineJob.addCallback(cb);
    engineJob.start(runnable);

進(jìn)入EngineRunnable的run方法看

 resource = decode();
private Resource<?> decode() throws Exception {
    if (isDecodingFromCache()) {
      return decodeFromCache();
    } else {
      return decodeFromSource();
    }
  }

其中l(wèi)oadCache還是loadFromSource的條件

  private boolean isDecodingFromCache() {
    return stage == Stage.CACHE;
  }

默認(rèn)stage會(huì)進(jìn)去,走到decodeFromCache(),由于cache里沒(méi)有,返回null到run方法里面觸發(fā)加載失敗的回調(diào)

 if (resource == null) {
      onLoadFailed(exception);
    } else {
      onLoadComplete(resource);
    }

在回調(diào)中重新提交一個(gè)runnable,改變stage,下一次run執(zhí)行時(shí),stage==source,就不會(huì)去loadCache,而是loadSource。(開(kāi)線程加載大概流程感覺(jué)就像是默認(rèn)先去緩存中找,沒(méi)找到就重新加載)

private void onLoadFailed(Exception e) {
    if (isDecodingFromCache()) {
      stage = Stage.SOURCE;
      manager.submitForSource(this);
    } else {
      manager.onException(e);
    }
  }

loadSource會(huì)一路走到

 private Resource<T> decodeFromSourceData(A data) throws IOException {
    final Resource<T> decoded;
    if (diskCacheStrategy.cacheSource()) {
      decoded = cacheAndDecodeSourceData(data);
    } else {
      long startTime = LogTime.getLogTime();
      decoded = loadProvider.getSourceDecoder().decode(data, width, height);
      if (Log.isLoggable(TAG, Log.VERBOSE)) {
        logWithTimeAndKey("Decoded from source", startTime);
      }
    }

這里回調(diào)的decode就是項(xiàng)目中自己設(shè)置的sourceDecoder

項(xiàng)目?jī)?nèi)的代碼象征性的打碼:

如何解決Glide緩存key的問(wèn)題

之前id和寬高傳的不一樣,導(dǎo)致key不一樣,然后Glide加載的時(shí)候通過(guò)key找不到緩存,最后就又回調(diào)到項(xiàng)目里面的decode那里來(lái)了。

改完后,第一次decode完后,后面用緩存就不會(huì)再進(jìn)入decode了。

以上是“如何解決Glide緩存key的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:如何解決Glide緩存key的問(wèn)題
URL地址:http://aaarwkj.com/article20/gdijco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、微信公眾號(hào)、品牌網(wǎng)站制作、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
国产成人精品久久一区二区| 免费亚洲一区二区三区| 国产精品国产亚洲精品看不| 肥胖老熟女一区二区三区| 国产好大好爽在线免费观看| 亚洲一区二区福利视频| 美女高潮呻吟免费观看久久久| 夜夜高潮夜夜爽免费观看| 中文乱码字幕亚洲精品| 亚洲午夜av久久乱码| 欧美黄色一区二区三区精品| 一区二区三区四区在线视频观看| 69久久精品费精品国产| 一区二区三区欧美日韩在线| 亚洲成人影院中文字幕| 人妇乱系列中文字幕人妻| 亚洲精品一区二区av| 国产成人av三级在线观看| 亚洲一级香蕉视频东京热| 成人免费大片在线观看视频| 蜜臀91精品视频在线观看| 尤物在线免费观看视频| 91国产网址在线观看| 婷婷亚洲五月伊人91| 日本东京热加勒比视频| 婷婷六月开心激情五月| 亚洲一区有码在线观看| 美国真人性做爰视频免费| 国产精品一区二区麻豆本子| 久久se精品一区精品二区国产| 热精品韩国毛久久久久久| 国产传媒在线免费播放| 99热国产这里只有精品| 国产又大又长又粗又硬又猛| 日韩在线视频观看一区二区三区| 在线麻豆国产传媒免费| 国产精品视频不卡免费看| 免费av在线观看日韩| 中日韩一二三四区在线看| 久久亚洲av电影网站| 婷婷色悠悠,色悠悠激情啪啪|