0

問題は、アンドロイドのメモリ割り当てに関するものです。背景に画像を持つ複数のビューを持つ ViewFlipper があります。ViewFlipper がすべてのビュー画像をロードして、メモリを使いすぎているかどうかを知りたいだけです。この部分はViewFlipperの初期化についてです

bgFlipper = (ViewFlipper) findViewById(R.id.bgFlipper);

int bgLayouts[] = new int[]{ R.layout.bg1, R.layout.bg2,R.layout.bg3,R.layout.bg4,...R.layout.bg100500}; // :)
for (int i = 0;i<bgLayouts.length; i++)
    bgFlipper.addView(inflater.inflate(bgLayouts[i], null));

問題は、その場でビューを動的に追加する必要があるか、それとも ViewFlipper が既にそれを行っているので、ビューの背景、つまりメモリ割り当てのビットマップについて心配する必要はありませんか?

4

1 に答える 1

0

はい、ViewFlipper は、それ自体をレイアウトした瞬間に、すべての子ビューを読み込みます。たとえば、ViewFlipper に onCreate() で作成されたビットマップを含む複数のフラグメントがある場合、それらが現在表示されているかどうかに関係なく、すべてが作成されます。その場合、OutOfMemoryError を簡単に作成できます。

于 2013-12-30T11:15:06.420 に答える