2017-02-04 11 views
-2

私の通知にArwork-Imageをロードしたい(MediaStyle)。次のコードを使用してグライドと同期してビットマップを読み込むにはどうしたらいいですか?

がエラーで私のアプリがクラッシュ:

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に追加するには、ビットマップが必要です。あなたがメインスレッド(別名UIスレッド)からネットワーク画像を取得するつもりなかった場合

+0

あなたは、UIスレッド上で実行するには、この方法を強制することができます。あなたはそれを避けるべきですが。 –

+0

答えがあなたを助けましたか? – OBX

+0

いいえ、私は旧バージョンに戻った –

答えて

0

How can I load a Bitmap syncronously with Glide?

は、それは、悪いアプローチだろう。かなりの時間を要する操作は、別のスレッドから実行する必要があります。さらに悪い場合は、ANR(Application Not Responding)状態になることさえあります。

あなたはグライドから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

私の追加情報を見てください! –

関連する問題