0

私はViewPager約10ページで持っています。すべてのページに 1000x2000 を超える解像度の画像があります。基本的に、画像の幅は画像ごとに異なります。幅 2048 を超えるサイズの画像を配置できなかったので、2 つの画像 (1 つの画像を 2 つの画像に分割) を使用しました。したがって、各ページには 2 つの画像と他のビューも含まれます。

最適化の多くの方法を試しましたが、多くを最適化できました。null を作成しImageView、そのビットマップを null に設定し、すべてのビューを削除して、 ViewPager 内のビットマップの破棄と最適化でそれらを null にしようとしました

これ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てnullにしています。

于 2013-07-06T08:31:11.970 に答える