【问题标题】:Glide fails to load resources when trying to load an image from a URL尝试从 URL 加载图像时,Glide 无法加载资源
【发布时间】:2018-04-19 08:51:49
【问题描述】:

我使用 glide 将图像加载到 Drawable 对象中。当我尝试加载本地图像时,它工作正常。但是,我从 url 切换到图像,它不起作用,我收到这个错误消息:

W/Glide: Load failed for https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png with size [-2147483648x-2147483648]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
      Cause (1 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{DirectByteBuffer->Object->Drawable}, DATA_DISK_CACHE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}
        Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->Bitmap->Drawable}
        Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->BitmapDrawable->Drawable}
      Cause (2 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, DATA_DISK_CACHE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable}
        Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable}
        Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable}
      Cause (3 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, DATA_DISK_CACHE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable}
          Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
        Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable}
          Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
      Cause (4 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{DirectByteBuffer->Object->Drawable}, REMOTE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}
        Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->Bitmap->Drawable}
        Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->BitmapDrawable->Drawable}
      Cause (5 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, REMOTE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable}
        Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable}
        Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable}
      Cause (6 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, REMOTE, https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png
        Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable}
          Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
        Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable}
          Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000

这是我的错误堆栈跟踪:

 Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
    at android.media.MediaMetadataRetriever.setDataSource(Native Method)
    at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:144)
    at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:128)
    at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:25) 
    ..... .... ...
    at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:72) 
    at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
    at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:303) 
    at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:270) 
    at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
    at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:445) 

上面是我的错误跟踪,我在回调中调试它。 这是我的实现:

Glide.with(context)
    .load("https://www.dropbox.com/s/nx8ufy3jxc9urgv/ic_reward_3rb.png")
    .into(object : SimpleTarget<Drawable>() {
        override fun onResourceReady(downloadedResource: Drawable, transition: Transition<in Drawable>) {
            Log.e("GameRejeki", "Resource is Ready...")
            downloadedResource.setBounds(
                    leftSize + leftSize / 2 - rewardIconWidth / 3,
                    topSize,
                    widthSize + leftSize / 2 - rewardIconWidth / 3,
                    heightSize
            )

            canvas.save()
            canvas.rotate(value, leftSize.toFloat(), leftSize.toFloat())
            downloadedResource.draw(canvas)
            canvas.restore()
        }
    })

【问题讨论】:

  • @476rick 请检查我更新的问题。我添加堆栈跟踪
  • 你使用什么版本的 Glide?​​span>
  • @476rick 版本。 4.4.0
  • 也许尝试更新到较新的版本?喜欢 4.7.0

标签: android kotlin android-glide


【解决方案1】:

在我的例子中,这个错误被触发是因为我试图在 Glide 回调中更新 UI,在主 Activity 线程之外。

在堆栈跟踪的顶部并不明显,我不得不仔细检查 logcat 以意识到这是问题所在。

在使用.runOnUiThread(..) 包装所有 UI 更新调用(在 Glide 回调方法中)后,异常消失了。

【讨论】:

    【解决方案2】:

    我知道这是一个较晚的重播,可能对其他人有帮助。

    由于您的链接来自 HTTPS,我认为您需要有一个 SSL 验证程序才能接受来自 https 链接的数据。 请检查belove链接

    accepting HTTPS connections with self-signed certificates

    【讨论】:

      【解决方案3】:

      检查您是否在AndroidManifest.xml中添加了互联网权限

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

      更新:

      Dropbox 中的实际图片网址是:

      https://photos-1.dropbox.com/t/2/AACkTffiGl7ApXhQS7i_wAs-VlEdi2hukrOrjBaj5fZe2A/12/117339454/png/32x32/3/1524150000/0/2/ic_reward_3rb.png/EN2_w1oYmYoDIAIoAg/4m_AZbPL_PKPAjLx4EdcJeRWU8hrrlf-SXDFk-mhlYQ?dl=0&amp;preserve_transparency=1&amp;size=2048x1536&amp;size_mode=3

      我能够使用此网址成功加载。

      所以我猜如果你使用以前的 url,Dropbox 会重定向到网页。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-18
        • 2012-11-15
        • 2021-05-30
        相关资源
        最近更新 更多