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

Gra*_*son 2 resources android loading out-of-memory imageview

我有一个布局,我在运行时使用单个线程添加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);
Run Code Online (Sandbox Code Playgroud)

aur*_*age 6

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

这是下载库的链接:http://square.github.io/picasso/

您需要的所有代码是:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
Run Code Online (Sandbox Code Playgroud)

它应该像一个魅力:)