首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glide未加载ModelLoader工厂

Glide未加载ModelLoader工厂
EN

Stack Overflow用户
提问于 2019-04-28 11:56:26
回答 1查看 175关注 0票数 0

我已经为Glide创建了一个AppGlideModule文件,并用我自己的ModelLoader和工厂替换了注册表。但是,传递一个我有ModelLoader的实例(GlideModel)并不会加载ModelLoader,这表现在调试/日志语句甚至没有触及ModelLoader的内部。我的前卫规则只是

代码语言:javascript
复制
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep class com.bumptech.glide.GeneratedAppGlideModuleImpl

我可以确认Glide正在运行,并且它确实在registerComponents中运行注册表替换。向glide调用添加请求侦听器也不会给出异常,也不会更改glide调试日志级别。

在AppGlideModule中,我有:

代码语言:javascript
复制
 override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        val locallibFactory = LocallibFactory.Factory()
        registry.replace(GlideModel::class.java, InputStream::class.java, locallibFactory)
    }

LocallibFactory是

代码语言:javascript
复制
internal class LocallibFactory : ModelLoader<GlideModel, InputStream> {

    override fun handles(model: GlideModel): Boolean {
        return true
    }

    override fun buildLoadData(
        model: GlideModel,
        width: Int,
        height: Int,
        options: Options
    ): ModelLoader.LoadData<InputStream>? {
        val key = ObjectKey("${model.book.filePath}:${model.position}")
        Timber.d("Got here")
        return ModelLoader.LoadData(key, LocallibDataFetcher(model))
    }

    internal class Factory : ModelLoaderFactory<GlideModel, InputStream> {

        override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<GlideModel, InputStream> {
            Timber.d("Got here2")
            return LocallibFactory()
        }

        override fun teardown() {
            // Do nothing
        }
    }
}

Glide在片段中用作

代码语言:javascript
复制
Glide.with(this)
            .load(GlideModel(book, 0, true))
            .into(card.imageView)

但是木材日志语句从未命中,并且调试表明它从未进入LocallibFactory ModelLoader。这不应该发生在replace中。为什么会发生这种情况,以及如何才能让ModelLoader真正被调用?

EN

回答 1

Stack Overflow用户

发布于 2019-04-29 22:22:09

将Glide call移动到presenter中,它起作用了--可能是上下文问题?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55886887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档