2017-02-04 7 views
-2

Я хочу загрузить Arwork-Image в свое уведомление (с MediaStyle).Как я могу загрузить Bitmap синхронно с 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, при необходимости!

Кроме

Я использую этот метод, чтобы загрузить изображение для уведомления ... Это уведомление создается в службе, так что интерфейс не будет прерываться! Поскольку у меня нет идентификатора уведомлений ImageView, я не знаю, как установить его по-другому! Кроме того, мне нужно Bitmap, чтобы добавить его в MediaMetaData для MediaSession.

+0

вы можете заставить этот метод работать на потоке пользовательского интерфейса. Хотя вам следует избегать этого. –

+0

Помог ли вам ответ? – OBX

+0

нет, я вернулся к своей старой версии –

ответ

0

How can I load a Bitmap syncronously with Glide?

Если ты намерен извлечь сетевой образ из главного потока (так называемый поток пользовательского интерфейса), который был бы плохо подход. Операции, которые занимают значительное время, должны выполняться из отдельного потока, или в худшем случае это может привести даже к состоянию ANR (Application Not Responseing).

Если вам нужен Bitmap от Glide, вы можете получить его совершенным в асинхронном режиме, это то, как вы это делаете:

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

. Пожалуйста, посмотрите мою дополнительную информацию! –