2017-02-04 124 views
-2

我想將Arwork-Image加載到我的通知中(使用MediaStyle)。如何與Glide同步加載位圖?

使用下面的代碼崩潰我的應用程序錯誤:

java.lang.IllegalArgumentException: You must call this method on a background thread

public Bitmap getAlbumArtwork(long albumID, int Height, int Width) { 
    try { 
     return Glide.with(mContext).load(getAlbumArtworkUri(albumID)).asBitmap().error(R.drawable.standardartwork).into(Width, Height).get(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

我也願意改變圖書館,例如到UniversalImageLoader,如有必要!

此外

我用這個方法來加載圖像的通知...該通知在服務中創建的,所以UI不會中斷!由於我沒有通知ImageView的ID,我不知道如何以另一種方式設置它! 此外,我需要位圖將其添加到MediaSession的MediaMetaData。

+0

你可以強制這種方法對UI線程上運行。儘管你應該避免這種情況。 –

+0

答案對你有幫助嗎? – OBX

+0

不,我回到我的舊版本 –

回答

0

How can I load a Bitmap syncronously with Glide?

如果你確實想要檢索主線程(也稱爲UI線程)的網絡圖像,這將是一個壞方法。需要花費大量時間的操作應該從一個單獨的線程執行,或者最糟糕的情況是它甚至可能導致ANR(應用程序未響應)狀態。

如果需要從滑翔Bitmap,您可以檢索它以異步方式完美的,你這是怎麼做到這一點:

Glide.with(mContext) 
      .load("http://example.com/imageurl") 
      .asBitmap() 
      .into(new SimpleTarget<Bitmap>() { 
       @Override 
       public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { 
        // you can do something with loaded bitmap here 

        // ..... 

        holder.mImageView.setImageBitmap(resource); 
       } 
      }); 
+0

請看看我的附加信息! –