如何使用imagepath回收imageView

时间:2011-02-09 12:09:17

标签: android out-of-memory

这里我将所有图像路径存储到数据库中。在TabHost中,如果单击“查找”选项卡,则应显示所有图像。那时OutOfMemoryError即将到来。请帮我。 这对我来说非常重要。

    Image s = pictures.get(i);
    TableRow imageTableRow = new TableRow(ctx);
    imageTableRow.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
    ImageView imageView = new ImageView(ctx);
    Log.i("NEVERFORGET","PICTURE IMAGE PATH is : " + s.getimagePath());
    Drawable d = Drawable.createFromPath(s.getimagePath());
    imageView.setImageDrawable(d);
    imageView.setId(i);
    imageView.setLayoutParams(new TableRow.LayoutParams(100,100));
    imageView.setPadding(0, 10, 0, 15);

1 个答案:

答案 0 :(得分:1)

不要使用Drawable.createFromPath(),因为它必须以原始分辨率加载图像。毫无疑问,这些是大型图像,照片等,因此一旦解压缩就需要大量内存,因此会出现OOM错误。即使你要求他们渲染成一个小盒子,它们也可能在内存中有足够的大小。

您应该将BitmapFactory.decodeFile()BitmapFactory.Options.inSampleSize的合适选择结合使用。