Android OutOfMemoryError在使用多个图像时出错
在我的应用程序中,我有3个屏幕,其中包含多个高分辨率图像。屏幕中使用的图像数量约为70-75。我已经编写了使用扩展BaseAdapter的适配器类在网格布局中添加图像的代码,在我编写的getView()方法中Android OutOfMemoryError在使用多个图像时出错,android,memory-management,android-emulator,android-imageview,performance,Android,Memory Management,Android Emulator,Android Imageview,Performance,在我的应用程序中,我有3个屏幕,其中包含多个高分辨率图像。屏幕中使用的图像数量约为70-75。我已经编写了使用扩展BaseAdapter的适配器类在网格布局中添加图像的代码,在我编写的getView()方法中 adapter = new ImageAdapter(this); gridview.setAdapter(adapter); int x = (int)(width/5.1f); imageView.setId(position); imageView.setLayoutParams(
adapter = new ImageAdapter(this);
gridview.setAdapter(adapter);
int x = (int)(width/5.1f);
imageView.setId(position);
imageView.setLayoutParams(new GridView.LayoutParams(x,x));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(4, 20, 4, 20);
但是在加载这个屏幕时,它显示了很多内存问题,在logcat中我得到了错误
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
请分享我如何编写代码来处理多个高分辨率图像的内存问题。谢谢。如果无法调整图像分辨率,则应将其作为
位图工厂.Options().inJustDecodeBounds=true
打开,将选项传递给图像(所需的调整大小),然后使用位图工厂.Options()再次解码。inJustDecodeBounds=false
位图图像的实际字节大小是通过将像素数乘以为像素分配的字节数来计算的ARGB_8888
(建议使用)为每个像素分配4个字节,因此大小将为宽度*高度*4个字节
有关更多详细信息,请阅读Android课程。这也应该有所帮助 70-75。。。什么是惊喜,嗯?)此处放置图像适配器的代码您应该使用缩略图,仅使用解决方案…检查此链接也正如Ferdau所说,您应该生成较小尺寸的图像(缩略图)以显示为网格,并且仅在用户需要时显示全分辨率图像(例如,通过单击图像)。这将解决你的内存问题,并且运行得更快。谢谢Ferdau和kai。