这里我将所有图像路径存储到数据库中。在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);
答案 0 :(得分:1)
不要使用Drawable.createFromPath()
,因为它必须以原始分辨率加载图像。毫无疑问,这些是大型图像,照片等,因此一旦解压缩就需要大量内存,因此会出现OOM错误。即使你要求他们渲染成一个小盒子,它们也可能在内存中有足够的大小。
您应该将BitmapFactory.decodeFile()
与BitmapFactory.Options.inSampleSize
的合适选择结合使用。