从资源加载图像时出现Android内存不足错误

时间:2014-01-14 13:22:24

标签: android resources imageview loading out-of-memory

我有一个布局,我在运行时使用单个线程添加ImageViews(大约13个)。当我加载超过7或8个图像(970px x 970px,270kb)时,应用程序崩溃显示内存不足错误。现在,当我加载相同的图像而不是选择13个不同的图像时,它显示正常。而且当我减小图像的大小(16px x 16px,770bytes)时,它显示正常。

有人知道加载图片时允许的最大内存是多少?解决这个问题的最佳方法是什么?显然人们之前已经遇到过这个问题并且由于加载图像库等而解决了这个问题。将这些图像加载到应用程序中的最佳方法是什么?任何帮助将不胜感激。

以下是我如何从资源中读取图像。这是一个循环,我从我正在阅读的对象列表中获取“drawableName”。这都在一个线程的onPostExecute中(即新的AsyncTask())

String defType = "drawable";
String defPackage = this.getPackageName();
int resourceId = Activity.this.getResources().getIdentifier(drawableName, defType, defPackage);
((ImageView) view.findViewById(R.id.iv_image)).setImageResource(resourceId);

2 个答案:

答案 0 :(得分:6)

解决问题的最快方法是使用Jake Wharton的Picasso库。它允许在一行代码中加载您的图像并管理缓存,转换,下载等。

以下是下载图书馆的链接:http://square.github.io/picasso/

您需要的所有代码是:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

它应该像魅力一样:)

答案 1 :(得分:4)

我会尝试只加载要显示的图像并将它们调整为合适的大小。 Android文档中有关于有效显示图像的指南read here

你也可以查看Picasso图书馆http://square.github.io/picasso/,我觉得这对于这些任务非常有用。

相关问题