0

6 ページの ViewPager を持つ Android アプリケーションを作成しました。すべてのページには、私が使用する小さな画像があります(背景ではなく、ImageView専用です)。

これらの画像はそれぞれ約 130 KB です。このアクティビティが開始されると、次のようなメッセージが表示されることに気付きました。

02-09 21:23:58.755: I/dalvikvm-heap(6478): Grow heap (frag case) to 49.015MB for 2457616-byte allocation

しばらくプレイした後、OOM 例外も発生します。

このようなサイズの画像をロードすると、なぜ多くのスペースが必要になるのかわかりません。

誰もそのような問題に直面しましたか?解決策はありますか?

前もって感謝します!

[アップデート]

コードを追加していないことをお詫びします:)

以下は、ViewPager で使用する Fragment の onCreateView です。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        ViewGroup rootView = (ViewGroup) inflater.inflate(
                R.layout.fragment_selection, container, false);

        mSelectionImage = (ImageView) rootView
                .findViewById(R.id.selection_image);

        switch (mPageNumber) {
        case 0:
            mSelectionImage.setImageResource(R.drawable.img_sel_0);
            break;
        case 1:
            mSelectionImage
                    .setImageResource(R.drawable.img_sel_1);
            break;
        case 2:
            mSelectionImage.setImageResource(R.drawable.img_sel_2);
            break;
        case 3:
            mSelectionImage
                    .setImageResource(R.drawable.img_sel_3);
            break;
        case 4:
            mSelectionImage.setImageResource(R.drawable.img_sel_4);

            break;
        case 5:
            mSelectionImage
                    .setImageResource(R.drawable.img_sel_5);
            break;
        default:
            break;
        }


        return rootView;
    }
4

1 に答える 1

1

6 つの画像があり、それぞれが 398x538 のサイズの png です。

これは、デフォルトで、それらすべてが 6*4*398*538= 5,138,976 バイト、つまり約 5 MB を使用することを意味します。

これは OOM の本当の原因とは思えません。

アプリやその他の原因について教えてください。

ファイルを drawable-ldpi または drawable-mdpi に入れた可能性はありますか?

このような場合、実行しているデバイスの密度によっては、画像にさらに時間がかかります。

たとえば、それらすべてを drawable-mdpi に配置しても、デバイスが xdpi screen で実行されている場合、これには 4 倍のメモリが必要になります (幅と高さの両方を 2 倍にするため)。ただし、まだ 50MB には達していません。

于 2013-02-09T23:23:15.727 に答える