我正在从网站下载图片并附加到列表视图中。
URL aURL;
try {
aURL = new URL(//"http://www.orientaldaily.com.my/"+
imagepath[i]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
imageview = (ImageView) findViewById(R.id.image_alllatestnewstitle);
imageview.setVisibility(View.VISIBLE);
imageview.setScaleType(ScaleType.CENTER_CROP);
imageview.setImageBitmap(bm);
} catch (IOException e) {
Log.e("DEBUGTAG", "Remote Image Exception", e);
}
当我只下载1张图片时,它没有问题,但是当我下载多张或超过5张图片并加载到列表视图中时,会导致问题。
问题是
bitmap size exceeds VM budget
如何避免这个问题?
注意:这不是重复的任何问题!
感谢。
答案 0 :(得分:1)
加载很多图像导致应用内存耗尽并强行关闭。我认为这是你的应用程序发生的事情。内存问题是android在开发应用程序时的一个复杂问题。这可以通过手动清除未使用的位图和使用垃圾收集器。
尝试使用System.gc();
尝试使用
Bitmap.recycle();
使所有未使用的位图为空。
释放所有未使用的内存。
这一切都会对你有所帮助,也可以通过这个link。使用内存分析器,它会帮助你发现解除分配的内存>试试这个link
public void deAllocateAllMemory()
{
try
{
mGallery.imgLoader1.disposeImages();
unbindDrawables(findViewById(R.id.magazineGrid));
mGallery=null;
back.getBackground().setCallback(null);
back.setOnClickListener(null);
store.getBackground().setCallback(null);
store.setOnClickListener(null);
quickAction.setOnActionItemClickListener(null);
settings.getBackground().setCallback(null);
settings.setOnClickListener(null);
}
catch (Exception e)
{
}
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
try {
view.getBackground().setCallback(null);
((BitmapDrawable) view.getBackground()).getBitmap().recycle();
view.destroyDrawingCache();
view.notifyAll();
} catch (Exception e) {
}
}
这段代码可能对你有所帮助。
答案 1 :(得分:0)
Displaying Bitmaps Efficiently教程可以帮助您。