自定义GridView的内存不足异常
这个问题在这里已经有了答案:
您正尝试为图像数据分配太多内存。 正如您在评论中所解释的那样,您的图像相当大,并且只要创建适配器就会被读取。
读入内存将消耗每个像素4个字节,所以如果你的图像是1024像素平方,数学是:
这可能超过了48MB的堆预算。
您可能希望提高显示这些图像的效率。 考虑:
getView()
机制; Esp for “..在GridView
加载图像:
您可以使用inSampleSize
加载所有图像并将原始图像替换为可见图像 - 这意味着可见的视图部分,动态加载图像时无需BitmapFactory
及其Options
的inSampleSize
。
您可以根据不同的设备缩小它们以加载图像而不会遇到内存问题。 在你的情况下,一些手机可能不会在第一次运行时表现出相同的行为,但最终,如果不处理优化的图像加载解决方案,应用程序将崩溃。
将缩小后的版本加载到内存中的主题。
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Android上的内存不足错误
关于如何避免它们:
如何避免在Android中使用位图时出现内存不足错误
有关概述:
http://blogs.innovationm.com/android-out-of-memory-error-causes-solution-and-best-practices/ http://android-developers.blogspot.de/2009/01/avoiding-memory- leaks.html
在设置drawable作为你的imageview的背景之前,即:
iv.setBackgroundResource(R.drawable.image);
获取缩放的位图或尝试其他选项,如inSampleSize
,检查您的解决方案如何影响图像质量。
对于评论:
Bitmap drawableImage=BitmapFactory.decodeResource(context.getResources(),R.drawable.image);
Bitmap bitmap = Bitmap.createScaledBitmap(drawableImage, width, height, false);
Drawable drawableScaled = new BitmapDrawable(context.getResources(), bitmap);
链接地址: http://www.djcxy.com/p/93091.html
上一篇: Out Of Memory Exception with custom GridView
下一篇: Decode the file to Bitmap in Android throwing exception