2011-07-29 112 views
1

我知道此錯誤在stackoverflow上發生多次,但通常是位圖大小問題。我的不同。我有一個ListView與自定義適配器。這裏是我的getView方法:OutOfMemoryError:位圖大小超過虛擬機預算(不是圖像大小問題)

public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.cell, null); 
    } 
    if (position % 2 == 0) { 
     convertView.setBackgroundResource(R.drawable.cell_even_bg); 
    } else { 
     convertView.setBackgroundResource(R.drawable.cell_odd_bg); 
    } 
} 

現在,當我有前例。 100個單元格在我的listView和我滾動這個列表一段時間,最後我總是得到一個錯誤OutOfMemoryError:位圖大小超過VM預算 - 在DDMS中,我可以看到它發生在convertView.setBackgroundResource(...)被調用時。我的drawable是1x10px,並在Y軸上重複。

+0

這是一種痛苦......我不時有這個問題.. –

回答

0

我用100個單元編寫測試應用程序來驗證您的問題,並發現它工作正常(多次滾動),沒有OOM錯誤。 代碼中必須存在其他內存泄漏。

+0

我非常懷疑這一點。就像我說的,DDMS表示超過這兩行中的任何一行都發生了。 –

+0

你認爲http://developer.android.com/resources/articles/avoiding-memory-leaks.html?當OOM發生時,DDMS表示線路大多不是導致MEM泄漏的根本原因線路。你能發佈你的其他代碼嗎? – outman

+0

不幸的是我不能 - 但我能說的是,當我改變convertView.setBackgroundResource(R.drawable.cell_odd_bg);讓我們來說convertView.setBackgroundColor(Color.GREY); (對於偶數單元當然也是一樣的)問題不會發生。 –

相關問題