我正在使用AQuery从webserver加载图像 并且内存异常(java.lang.OutOfMemoryError:线程创建失败)。当有OOM时,我做了文档建议的所有内容。但我无法逃脱。你可以建议我为什么在加载40张图片后得到OOM?
答案 0 :(得分:2)
避免OOM的最佳方法,尤其是在处理图像时,如下所示:
单独使用volley或Picasso无法解决OOM问题。为了处理OOM问题,请使用框架提供的BitmapFactory将下载的图像调整为足够大小的尺寸。它正在显示的视图。您可以执行以下操作
ImageView imgView = findViewById(R.id.img);
int height = imgView.getHeight();
int width = imgView.getWidth();
Bitmap = yourBitmapOfFullResolution;
位图scaledBitmap = Bitmap.createScaledBitmap (yourBitmapOfFullResolution,height,width,true);
imgView.setImageBitmap(scaledBitmap);
答案 1 :(得分:1)
试试Volley Library。它更快更有效率。 我认为你的问题是你的设备的堆大小,如果你在模拟器上运行和测试你的应用程序。然后,您可以通过编辑设备配置轻松增加堆大小。
答案 2 :(得分:1)
在使用可用平台资源无法满足内存请求时抛出此异常。这样的请求可以由正在运行的应用程序或VM的内部功能进行。
在清单文件的应用程序标记中添加此字段
android:largeHeap="true"