我收到內存不足錯誤。我檢查了DDMS,發現我分配更多內存的地方在我的適配器中的getView()方法中。它是一個更好的辦法,我創建的對象則是這樣的:使用適配器的內存不足
view=new ImageView(myContext);
這是我getView的一個例子()方法:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView==null){
view=new ImageView(myContext);
view.setLayoutParams(new AbsListView.LayoutParams(columnWidth,columnWidth));
view.setBackgroundColor(Color.GRAY);
}else{
view=convertView;
convertView.setBackgroundColor(Color.GRAY);
}
return view;
}
我得到的c'tor背景:
public emptySquaresAdapter(Context myContext,) {
super();
this.myContext=myContext;
}
我看了關於上下文泄漏,是這樣嗎?
編輯:
在這種情況下,我在顯示屏幕上的所有視圖中的一次,所以轉換後的觀點是從來沒有使用過(我不需要滾動顯示更多的意見)。
此適配器在屏幕上顯示12個方格。方法getView被稱爲12次與位置0(我想測量所有的孩子的爭奪),然後只能繼續位置1,2,3 ... 爲什麼這樣的事情發生?這是否會造成OOM問題? 我從另一個適配器調用這個適配器,我想這會讓一切變得複雜。
我也解除綁定所有可繪製在的onDestroy,並設置imageView.getDrawable()。setCallback(空)的所有imageViewsIt仍然不起作用
當他們不再需要時,您更可能不會刪除ImageView,因此他們只是保持堆疊。 – DeeV
放入一些日誌,看看convertView是否正常工作。 – FoamyGuy
不可能知道您發佈的代碼。請發佈重現問題的最低代碼。 – m0skit0