OutOfMemoryException при загрузке изображений большого размера с помощью glide
Итак, я использовал эту удивительную библиотекускольжение для отображения собственных изображений в приложении моей галереи. я используюViewPager
сFragmentStatePagerAdapter
показывать полноразмерные изображения. Пейджер выключен лимит экрана1
(по умолчанию для экономии памяти). Я использую этот код для загрузки изображений вViewPager
в моем фрагменте:
Glide.with(getActivity())
.loadFromMediaStore(uri)
.asBitmap()
.signature(new MediaStoreSignature(mimeType, dateModified,
.into(mImageView);
Теперь я столкнулся с некоторыми проблемами, такими как:
Изображения загружаются довольно долго (если не кэшированы). Таким образом, пока пользователь прокручивает пустой экран видового экрана, пока изображение загружается, чего я хочу избежать. Есть ли способ, которым я могу сделать это? Может быть, путем проповеди изображенийИногда при прокрутке изображений большого размера (в основном фото с камеры)OOM Exception выбрасывается и пользователь остается с пустым экраном, так как изображение не загружается. Это также происходит, когда я перехожу из портретного режима в ландшафтный. Итак, я попытался использовать такие методы, какatMost()
- что ухудшает качество изображения, поскольку изображения уже загружены вRGB_565
а такжеapproximate()
что также вызывает ООМ. Как я могу достичь максимального качества изображения без исключения OOM?Что касается второй проблемы, я подумал о том, чтобы загружать менее качественные изображения для элементов вне экрана, а затем улучшать качество, когда они появляются на экране. Является ли это возможным?
Я также пытался использоватьARGB_8888
но результат был таким же: исключение OOM.