對於我正在開發的應用程序,我試圖用很多圖像填充GridView。爲了避免OutOfMemoryExceptions,我檢查可用內存量,並在達到一定的閾值時,我嘗試以釋放內存,就像這樣:釋放GridView中的內存
private void freeUpMemory() {
// Clear ImageViews up to current position
for (int i = 0; i < mCurrentPosition; i++) {
RelativeLayout gridViewElement = (RelativeLayout) mGridView.getChildAt(i);
if (gridViewElement != null) {
ImageView imageView = (ImageView) gridViewElement.findViewById(R.id.image);
imageView.getDrawable().setCallback(null);
imageView = null;
}
}
}
我注意到,這實際上並沒有釋放內存。我不知道的是爲什麼。我錯過了什麼嗎?
您是否創建了自己的ImageAdapter?它是否實現了GetView?如果是這樣,釋放視圖中的圖像傳遞給你作爲convertView將是最有效的方式來管理你的內存使用。 –
將imageView設置爲null不起作用。你所做的只是清除你的本地參考。如果您在convertView上調用setDrawable,並且沒有其他引用,則應釋放內存。 –
是的,我用我自己的ImageAdapter與getView()。 GridView中的每個元素都是一個包含ImageView和TextView的RelativeLayout。在ImageView上我使用setImageBitmap。我將如何釋放作爲convertView傳遞的圖像?這聽起來很有希望,你可以舉一個例子嗎? – Zero