Слайд не загружает ModelLoader factory - PullRequest
0 голосов
/ 28 апреля 2019

Я создал файл AppGlideModule для Glide и заменяю реестр своим собственным ModelLoader и фабрикой.Тем не менее, передача экземпляра (GlideModel), для которого у меня есть ModelLoader, не загружает ModelLoader, о чем свидетельствуют операторы отладки / журнала, которые даже не затрагивают внутреннюю часть ModelLoader.Мои правила proguard просто

-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep class com.bumptech.glide.GeneratedAppGlideModuleImpl

, и я могу подтвердить, что Glide работает и выполняет замену реестра в registerComponents.Добавление прослушивателя запросов к вызову glide также не дает исключения и не меняет уровень журнала отладки glide.

В AppGlideModule у меня есть:

 override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        val locallibFactory = LocallibFactory.Factory()
        registry.replace(GlideModel::class.java, InputStream::class.java, locallibFactory)
    }

LocallibFactory равен

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 используется во фрагменте как

Glide.with(this)
            .load(GlideModel(book, 0, true))
            .into(card.imageView)

Но операторы журнала древесины никогда не выполняются, и отладка показывает, что он никогда не идет в LocallibFactory ModelLoader.Это не должно случиться с заменой.Почему это когда-нибудь случится и как я могу заставить ModelLoader на самом деле вызываться?

1 Ответ

0 голосов
/ 29 апреля 2019

Перенес вызов Glide в докладчик, и это сработало - возможно, проблема с контекстом?

...