第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在第一次加載時(shí)未調(diào)用的Target對(duì)象的onBitmapLoaded

在第一次加載時(shí)未調(diào)用的Target對(duì)象的onBitmapLoaded

在第一次加載時(shí)未調(diào)用的Target對(duì)象的onBitmapLoaded在我的功能:public void getPointMarkerFromUrl(final String url, final OnBitmapDescriptorRetrievedListener listener) {final int maxSize = context.getResources().getDimensionPixelSize(R.dimen.icon_max_size);Target t = new Target() {   @Override   public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {     if (bitmap != null)       listener.bitmapRetrieved(getBitmapDescriptorInCache(url, bitmap));     else       loadDefaultMarker(listener);   }   @Override   public void onBitmapFailed(Drawable errorDrawable) {     loadDefaultMarker(listener);   }   @Override   public void onPrepareLoad(Drawable placeHolderDrawable) {   }};Picasso.with(context)     .load(url)     .resize(maxSize, maxSize)     .into(t);}我第一次加載圖片時(shí)從不調(diào)用onBitmapLoaded()。我已經(jīng)閱讀了一些話題,如https://github.com/square/picasso/issues/39,建議使用fetch(Target t)方法(這似乎是弱引用的問(wèn)題......),但是這個(gè)函數(shù)在畢加索的最后一個(gè)版本(2.3.2)中沒(méi)有。我只有一個(gè)fetch()方法,但我不能同時(shí)使用(mytarget)你能解釋一下如何使用fetch()和自定義Target嗎?謝謝。Doc:http://square.github.io/picasso/javadoc/com/squareup/picasso/RequestCreator.html#fetch--
查看完整描述

3 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

正如其他受訪者(@lukas和@mradzinski)所指出的那樣,畢加索只對(duì)該Target對(duì)象保持弱引用。雖然你可以在你的Target一個(gè)類(lèi)中存儲(chǔ)一個(gè)強(qiáng)引用,但是如果以任何方式Target引用a ,這仍然會(huì)有問(wèn)題View,因?yàn)槟阋灿行У乇3謱?duì)它的強(qiáng)引用View(這是畢加索的事情之一)明確幫助你避免)。

如果您處于這種情況,我建議將標(biāo)記標(biāo)記TargetView

final ImageView imageView = ... // The view Picasso is loading an image intofinal Target target = new Target{...};imageView.setTag(target);

這種方法的好處是讓畢加索能夠?yàn)槟幚硪磺?。它將管?code>WeakReference每個(gè)視圖的對(duì)象 - 只要不再需要一個(gè),Target對(duì)圖像也將被釋放的任何處理,所以你不會(huì)因長(zhǎng)期目標(biāo)而陷入內(nèi)存泄漏,但你的目標(biāo)會(huì)持續(xù)只要它的觀點(diǎn)還活著。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

Picasso沒(méi)有對(duì)Target對(duì)象的強(qiáng)引用,因此它被垃圾收集并且不調(diào)用onBitmapLoaded。

解決方案很簡(jiǎn)單,juste強(qiáng)烈引用了Target。

public class MyClass {
   private Target mTarget = new Target() {...};
   public void getPointMarkerFromUrl(final String url, final OnBitmapDescriptorRetrievedListener listener) {
         Picasso.with(context)
         .load(url)
         .resize(maxSize, maxSize)
         .into(mTarget);
   }}


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果我有ImageView,我會(huì)這么簡(jiǎn)單:imageView.setTag(target);

我使用下一個(gè)解決方案將Bitmaps加載到通知中,所以我只需要位圖。

因此,創(chuàng)建Set witch將存儲(chǔ)Target對(duì)象并在完成加載時(shí)將其刪除。

final Set<Target> protectedFromGarbageCollectorTargets = new HashSet<>();private void loadBitmap(String url) {
   Target bitmapTarget = new BitmapTarget(nEvent);
   protectedFromGarbageCollectorTargets.add(bitmapTarget);
   Picasso.with(context).load(url).into(bitmapTarget);}class BitmapTarget implements Target {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
                    //handle bitmap
                    protectedFromGarbageCollectorTargets.remove(this);
                }
            }
        }
        @Override
        public void onBitmapFailed(Drawable drawable) {
            protectedFromGarbageCollectorTargets.remove(this);
        }
        @Override
        public void onPrepareLoad(Drawable drawable) {
        }
    }


查看完整回答
反對(duì) 回復(fù) 2019-08-02
  • 3 回答
  • 0 關(guān)注
  • 797 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)