我有一個畫廊部件與關於fitfy(幾乎)全屏幕圖像。圖像從SD卡加載,一次只能看到一個圖像(滾動時接受重疊)。問題是滾動大約35張圖片後,我得到OutOfMemoryError:位圖超出虛擬機預算。我認爲一個畫廊小部件根據需要處理了視圖,但我想我是錯了,或者做錯了什麼。Android畫廊部件與內存不足問題
我使用CursorAdapter加載數據,並且我注意到每當我滾動到新圖像時,都會調用newView()和bindView()。我認爲這意味着原始觀點已經被處理掉了,但是失憶問題似乎表明了相反的情況。我在很多領域使用ViewHolder。
所以我的問題是:
- 是否畫廊控件行爲不同於一個ListView與一個CursorAdapter使用時?
- 有沒有辦法強制回收和/或處置意見? (或者我可能做錯了什麼)。
- 有關處理此場景內存不足問題的其他建議?降尺寸並不是真正的選擇,畫廊應該能夠處理無限數量的圖像(或至少兩倍)。
你是否在其他地方持有對視圖的引用,以防止它們被GCed? – 2010-11-01 14:41:17
不,我很確定沒有。我試圖儘可能地剝離它。有關陷阱的任何提示?什麼會導致convertView CursorAdapter.getView爲空?由於每次使項目變爲可見時都會調用newView,因此convertView每次都爲空。我可能是錯誤的,但我會假設一個項目要麼保留它的視圖,要麼釋放它以用於GC。此外,如果我只是在前8-10項之間來回滾動,我永遠不會得到OutOfMemory(但仍然會爲每個項目調用newView())。 – 2010-11-01 15:34:54