Glide Android - не удалось загрузить ресурс с URL - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь загрузить изображение из асинхронного URL-адреса (в фоновом потоке).

Пытаюсь примерно так:

  val futureTarget = glide
    .asBitmap()
    .load("https://dummyimage.com/300/09f/fff.png")
    .submit(300, 300)

  val bitmap = futureTarget.get() 

Но при попытке загрузить приложение вылетаетЛюбое изображение с URL, оно отлично работает при загрузке локальных ресурсов.

Logcat

There was 1 cause:
    com.bumptech.glide.load.HttpException(Not Found)
     call GlideException#logRootCauses(String) for more detail
        at com.bumptech.glide.request.RequestFutureTarget.doGet(RequestFutureTarget.java:205)
        at com.bumptech.glide.request.RequestFutureTarget.get(RequestFutureTarget.java:108)
        at com.....Notifier$sendNotificationTest$1.run(Notifier.kt:85)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    com.bumptech.glide.load.HttpException(Not Found)
     call GlideException#logRootCauses(String) for more detail

Я добавил разрешения Интернет.

<uses-permission android:name="android.permission.INTERNET" />

Предоставление Glide с использованием Dagger 2

@Provides
@Singleton
static RequestManager provideGlide(final Application application) {
    return GlideApp.with(application);
}

Есть идеи, что мне не хватает?

ОБНОВЛЕНИЕ

Я выяснил, что существует проблема с некоторыми HttpInterceptors.Это решение работает синхронно с загрузкой растровых изображений.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

попробуй это .... это тебе поможет.

Glide.with(this)
  .load(image_url)
  .into(imageView)
  .placeholder(R.drawable.your_placeholder_image)
  .error(R.drawable.your_error_image)
0 голосов
/ 11 июня 2019

попробуйте это ..

    val options = RequestOptions()
            .placeholder(R.drawable.your_placeholder_image)
            .error(R.drawable.your_error_image)

    Glide.with(this).load(image_url).apply(options).into(imageView)

РЕДАКТИРОВАТЬ: - Чтобы получить Callbacks

Glide.with(this)
        .load(url)
        .listener(object : RequestListener<Drawable> {
            override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
                //TODO: something on exception
            }
            override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
                Log.d(TAG, "OnResourceReady")
                //do something when picture already loaded
                return false
            }
        })
        .into(imgView)
...