我實現了一個搜索文本爲我的名單,搜索的文字和圖片的內存溢出異常
每個列表行項目包括文本和圖像,我從服務器上下載。
我alsways保持兩個列表,一個是文本和圖像等一個是文本和圖像的排序列表的原始列表...
如果我的列表containes只有4項,所以我的應用效果很好,但是如果我的列表containes 20個項目,每個圖像爲1MB,我需要保持兩個列表listImagesOriginal,適配器(= 40MB)內image_array我收到了一個內存溢出異常。
我怎樣才能減少內存消費,我不會recive一個內存溢出異常?
非常感謝
我如何能減少
private MyCustomAdapter adapter;
private List<String> text = new ArrayList<String>();
private List<Bitmap> listImages;
private List<String> textOriginal = new ArrayList<String>();
private List<Bitmap> listImagesOriginal =new ArrayList<Bitmap>();
adapter =new MyCustomAdapter(text,listImages);
ListView.setAdapter(adapter);
searchText= (EditText) findViewById(R.id.profile_page_search);
searchText.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
// Abstract Method of TextWatcher Interface.
textlength = searchText.getText().length();
adapter.deleteAllForSearch();
for (int i = 0; i < textOriginal.size(); i++)
{
if(textOriginal.get(i).contains(
searchText.getText().toString().trim()))
{
adapter.addObjectForSearch(textOriginal.get(i), listImagesOriginal.get(i));
}
}
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after)
{
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,
int start, int before, int count)
{
}
});
class MyCustomAdapter extends BaseAdapter{
public List<String> text_array = new ArrayList<String>();
public List<Bitmap> image_array = new ArrayList<Bitmap>();
public int getCount(){
return text_array.size();
}
MyCustomAdapter(List<String> text, List<Bitmap>)
{
text_array = text;
image_array = image;
}
public long getItemId(int position){
return position;
}
public String getItem(int position){
return null;
}
public View getView(final int position, View convertView, ViewGroup parent) {
//my implementation
}
public void addObjectForSearch(String text, Bitmap bitmap) {
text_array.add(text);
image_array.add(bitmap);
notifyDataSetChanged();
}
保持圖像是不是一個好主意,因爲它消耗的內存極大。 (特別是對於應用程序,這可能會降低設備和消耗大量功率的),除非你有一個特別的理由讓加載的圖像,嘗試本地存儲的地方的形象和對存儲的文件路徑,而不是。 – wns349 2013-04-08 14:39:32
謝謝,我如何將圖像保存到SD卡?並在我的應用程序退出刪除它們? – 2013-04-08 14:46:26