我的代碼:出與畫廊內存錯誤的Android中
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(mContext);
Drawable photo = new BitmapDrawable(loadBitmap(URL));
iv.setImageDrawable(photo);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
return iv;
}
private Bitmap loadBitmap(String url) {
try {
Bitmap bm = BitmapFactory.decodeStream((InputStream)this.fetch(url));
return bm;
}
catch(Exception e) {
e.printStackTrace();
return null;
}
}
public Object fetch(String address) {
try {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
catch(Exception e) {
e.printStackTrace();
}
return this;
}
我嘗試查看約100張照片與URL中的畫廊。 但是,當查看約10張照片時,出現了內存不足錯誤。 我該怎麼做才能避免錯誤?
我嘗試修改getView(),如下。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(mContext);
InputStream is = (InputStream)this.fetch(URL);
Drawable photo = Drawable.createFromStream(is, "src");
iv.setImageDrawable(photo);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
return iv;
}
的內存問題是仍然存在。 錯誤消息是java.lang.OutOfMemoryError: bitmap size exceeds VM budget
,在行Drawable photo = Drawable.createFromStream(is, "src");
。
略無關,你的核心問題,但請確保您做耗時的操作(在這裏 - 下載圖像/照片)在輔助線程(最好是在一個異步任務)。這樣你將提供無縫的用戶體驗。 – Abhijit 2011-12-16 01:50:55