所以,我一直在使用这个令人惊叹的库Glide在我的图库应用中显示原生图像。我正在使用ViewPager
withFragmentStatePagerAdapter
来显示全尺寸图像。寻呼机的屏幕外限制为1
(默认为节省内存)。我正在使用此代码将图像加载到ViewPager
我的片段中:
Glide.with(getActivity())
.loadFromMediaStore(uri)
.asBitmap()
.signature(new MediaStoreSignature(mimeType, dateModified,
.into(mImageView);
现在,我在这里面临一些问题,例如:
- 图像需要相当长的时间来加载(如果没有缓存)。因此,当用户滚动浏览器时,会在加载图像时显示空白屏幕,这是我想要避免的。有什么办法可以做到这一点吗?也许通过预先缓存图像?
- 有时,在滚动浏览大尺寸图像(主要是相机照片)时,会引发OOM 异常,并且由于没有加载图像,用户会出现空白屏幕。当我从纵向模式切换到横向模式时,也会发生这种情况。所以,我尝试使用类似的方法
atMost()
——当图像已经加载时RGB_565
,approximate()
它会进一步降低图像的质量,这也会导致 OOM。如何在不出现 OOM 异常的情况下实现最高图像质量?
对于第二个问题,我正在考虑为屏幕外项目加载质量较低的图像,然后在它们出现在屏幕上时提高质量。可能吗?
我也尝试过使用ARGB_8888
但结果是一样的:OOM异常。