我相信我的問題涉及內存管理。如何管理內存?
我的程序是一個匹配的紙牌遊戲。我的佈局由12個ImageViews組成。 我的活動文件有一個列表ImageView屬性引用這12個ImageViews。 這是在OnCreate
方法中完成的,其中我還爲ImageView設置了單擊偵聽器。
這是點擊監聽的示例:
private void clickImage(View view){
ImageView imgV = (ImageView) view;
imgV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView imgV = (ImageView) v;
new ShowCardImage().execute(Integer.valueOf(imgV.getTag().toString())-1);
}
});
}
ShowCardImage是一個的AsyncTask類,其中一旦ImageView的被點擊時,相應的臉部圖像將被顯示。
該程序完全按原樣工作。當我選擇描繪封面圖像的圖像視圖時,它將替換爲人臉圖像。
現在我需要比較每2張選中的牌。我如何去做這件事? 我自動考慮使用List Integer屬性來表示ImageView的標籤。
現在爲了比較2張卡片,我應該創建另一個AsyncTask類。 如果是這樣的話,應在ShowCardImage執行後的偵聽器中調用它。或者我應該在ShowCardImage類中調用它。如果是的話,在doinbackground()
或onpostexecute()
。
而且,我現在的代碼是否適合內存管理?根據我的理解,每次單擊圖像時,都會在後臺執行任務。
因此可以說,如果用戶五次按卡1。這是否意味着同時創建5個獨立的後臺任務。列表屬性中的5個相同標籤用於跟蹤用戶選擇的卡片。
當我更改ShowCardImage類的圖像onProgressUpdate()
時,確保將圖像的setEnabled設置爲false,可以避免這種情況嗎?
或者我必須檢查列表整數屬性中的項目一和二在doinbackground
的開頭是否相同。如果是這樣,什麼是防止任務3,4,5,當我在任務2中刪除它時添加card1標記。