Glide не получает все изображения из кеша, некоторые пустые - PullRequest
0 голосов
/ 24 марта 2020

Я использую Glide, чтобы показать список изображений в виджете в моем приложении. В SplashScreen приложения я пытаюсь загрузить и предварительно кэшировать все изображения с помощью Glide, поэтому внутри приложения мы можем иметь сверхбыструю загрузку этих изображений, поскольку они уже загружены в кэш. Проблема в том, что, хотя все изображения, по-видимому, предварительно кэшируются, внутри виджета они перестают получать рендеринг после 7-го или 8-го изображения (из общего числа 15) и показывают только заполнитель.

Вот код в SplashScreen:

imageURLs.forEach { imageURL ->
        Glide.with(context)
          .downloadOnly()
          .diskCacheStrategy(DiskCacheStrategy.ALL)
          .load(imageURL)
          .submit()
          .get()
  }

Этот код взят из официальной документации Glide как способ загрузки и кэширования изображений, не отображая их где-либо в этой точке.

Тогда в моем активность виджетов, в которой я пытаюсь отображать изображения только из кэша (отсюда и настройка .onlyRetrieveFromCache(true)), но фактически только половина изображений отображается в списке, а остальные отображают только заполнитель.

Glide.with(context)
            .load(imageURL)
            .placeholder(placeholderDrawable)
            .onlyRetrieveFromCache(true)
            .into(imageView)

Я проверил итерацию imageURL с журналами, и, очевидно, все изображения предварительно кэшируются внутри SplashActivity. Почему они все не извлекаются из кеша? Изображения имеют небольшое разрешение, приложение настроено на LargeMemoryHeap и HardwareAcceleration и протестировано на Galaxy S10 +, поэтому о нехватке ресурсов CPU / GPU / MEMORY / STORAGE не может быть и речи. Любые идеи?

...