0

我有ViewPager大约 10 页。所有页面的图像分辨率超过 1000x2000。对于不同的图像,基本上图像的宽度是不同的。因为我无法放置超过 2048 宽度的图像,所以我使用了 2 个图像(将一个图像分成 2 个图像)。所以每个页面都有 2 个图像和其他视图。

我尝试了许多优化方法,但可以优化很多。我尝试ImageView将其设为 null 甚至将其位图设置为 null 甚至删除所有视图并使它们在销毁时为 null 并 优化 ViewPager中的位图

在这个我Asyntask用来在屏幕上加载图像。甚至尝试将图像存储在缓存中。但仍然面临与内存相关的问题。

需要建议我如何优化更多并避免内存不足。

4

1 回答 1

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为空。

于 2013-07-06T08:31:11.970 回答