我的ViewPager
大约有10页。所有页面的分辨率都超过1000x2000。基本上,不同图像的图像宽度不同。因为我无法放置超过2048宽度的图像所以我使用了2张图像(将一张图像分成2张图像)。所以每页都有2张图像和其他视图。
我尝试了很多优化方法,但能够进行优化。
我尝试将ImageView
null设置为null,甚至将其位图设置为null,甚至删除所有视图并使其在destroy和Optimize bitmaps inside ViewPager
在此我使用Asyntask
在屏幕上加载图像。甚至尝试在Cache中存储图像。但仍面临与记忆相关的问题。
需要建议我如何优化更多并避免内存不足。
答案 0 :(得分:0)
我通过让AsyncTask
从资源加载图片来解决这个问题。从内存加载后,我将其存储在LRU缓存中。然后我从缓存中检索它。
在doInBackgroud()
我有:
BitmapFactory.Options mOptions = new BitmapFactory.Options();
mOptions.inPurgeable = true;
mOptions.inPreferredConfig = Bitmap.Config.RGB_565;
mOptions.inPreferQualityOverSpeed = false;
mOptions.inJustDecodeBounds = false;
mOptions.inScaled = true;
SoftReference<Bitmap> bm = new SoftReference<Bitmap>(
BitmapFactory.decodeResource(
getApplicationContext().getResources(), data,
mOptions));
return bm.get();
有了这个,我正在onDestroy()
中回收图像并使Bitmap
为空。