Skip to content

glide大图加载的时候缓存策略ALL #65

@charmeleon2

Description

@charmeleon2

描述一下大概怎么回事
有些库会接管glide的解析过程,这些库可能只做了解码,没做编码,导致缓存策略为Resource/ALL的时候会缓存失败

如何复现
和apng4android配合使用的时候会有问题,大图查看gif的时候会黑屏,应该是GlideBigImageHelper这里缓存策略为ALL导致的,处于兼容性考虑改成data会更好点?

错误日志
Request threw uncaught throwable

                                                                                    com.bumptech.glide.Registry$NoResultEncoderAvailableException: Failed to find result encoder for resource class: class com.github.penfeizhou.animation.gif.decode.GifDecoder, you may need to consider registering a new Encoder for the requested type or DiskCacheStrategy.DATA/DiskCacheStrategy.NONE if caching your transformed resource is unnecessary.

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.onResourceDecoded(DecodeJob.java:600)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob$DecodeCallback.onResourceDecoded(DecodeJob.java:642)

                                                                                    at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:60)

                                                                                    at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76)

                                                                                    at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:539)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:503)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:489)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:399)

                                                                                    at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:100)

                                                                                    at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:62)

                                                                                    at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:77)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:277)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)

                                                                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

                                                                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)

                                                                                    at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:424)

                                                                                    at java.lang.Thread.run(Thread.java:1042)

                                                                                    at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:383)

2026-03-12 11:03:15.017 GlideExecutor com.realtech.xiaocan E Request threw uncaught throwable

                                                                                    com.bumptech.glide.Registry$NoResultEncoderAvailableException: Failed to find result encoder for resource class: class com.github.penfeizhou.animation.gif.decode.GifDecoder, you may need to consider registering a new Encoder for the requested type or DiskCacheStrategy.DATA/DiskCacheStrategy.NONE if caching your transformed resource is unnecessary.

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.onResourceDecoded(DecodeJob.java:600)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob$DecodeCallback.onResourceDecoded(DecodeJob.java:642)

                                                                                    at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:60)

                                                                                    at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76)

                                                                                    at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:539)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:503)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:489)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:399)

                                                                                    at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:100)

                                                                                    at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:62)

                                                                                    at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:77)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:277)

                                                                                    at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)

                                                                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

                                                                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)

                                                                                    at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:424)

                                                                                    at java.lang.Thread.run(Thread.java:1042)

                                                                                    at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:383)

截图说明
添加截图最好是 gif 或 视频

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions