从网络服务器

时间:2016-05-17 07:44:57

标签: android performance listview

我正在使用AQuery从webserver加载图像 并且内存异常(java.lang.OutOfMemoryError:线程创建失败)。当有OOM时,我做了文档建议的所有内容。但我无法逃脱。你可以建议我为什么在加载40张图片后得到OOM?

3 个答案:

答案 0 :(得分:2)

避免OOM的最佳方法,尤其是在处理图像时,如下所示:

  1. 如果可能且您的api支持,请尝试根据分辨率获取图像,以便在移动设备上查看。
  2. 单独使用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"