我在https://stackoverflow.com/a/6779067/1236259线程中尝试了hp.android,但我的活动从未调用onDestroy方法
我有一个带有图像的ListView,我通过以下方式调用其他活动:
ImageButton imageButtonSeeMap = (ImageButton)this.findViewById(R.id.imageButtonSeeMap);
imageButtonSeeMap.setOnClickListener(new OnClickListener() {....
从新活动中我再次调用ListView活动,在这一点上我得到了exeption:java.lang.OutOfMemoryError:位图大小超过VM预算
列表视图中的图像使用以下方式创建:
thumb_u = new URL(lp.get(i).getImage());
thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
imageViewPoi.setImageDrawable(thumb_d);
如何释放图像的内存?永远不会调用onDestroy方法中的unbindDrawable。
有什么想法吗?
答案 0 :(得分:1)
图像是android中的野兽,所以OutofMemory异常是你可能不得不习惯的东西。这应该允许您的列表视图从Web获取图像,而不是崩溃您的应用程序。
假设第二个代码块来自ListView的适配器getView()方法,请尝试:
try {
thumb_u = new URL(lp.get(i).getImage());
thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
imageViewPoi.setImageDrawable(thumb_d);
} catch (OutOfMemoryError e) {
System.gc();
thumb_u = new URL(lp.get(i).getImage());
thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
imageViewPoi.setImageDrawable(thumb_d);
}