2013-04-03 60 views
0

這個問題更多的是關於android的內存分配。我有一個ViewFlipper有幾個視圖,每個視圖都有背景圖片。我只是想知道,如果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已經這樣做對我來說,我不應該擔心自己的觀點的背景位圖,即內存分配?

回答

0

是的, ViewFlipper加載它自己佈局的每一個子視圖。例如,如果您的ViewFlipper具有多個在onCreate()上創建位圖的Fragments,則它們都將被創建,無論它們目前是否可見。所以你最好小心,在這種情況下你可以很容易地創建OutOfMemoryError。

+0

看起來像使用ViewPager更加充分的方法。至少你可以控制正在初始化的頁面數量('setOffscreenPageLimit(n)')。 – Stan

+0

是的,你也可以創建你的自定義適配器到ViewPager,在那裏你有更多的控制。請記住在使用它們之後回收您的位圖,這將優化您的應用程序的內存使用。 –