Я использую 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 не может быть и речи. Любые идеи?