Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有多个图像的自定义ListView内存不足异常_Android_Listview_Out Of Memory_Android Image - Fatal编程技术网

Android 具有多个图像的自定义ListView内存不足异常

Android 具有多个图像的自定义ListView内存不足异常,android,listview,out-of-memory,android-image,Android,Listview,Out Of Memory,Android Image,我正在尝试创建一个Android ListView,它看起来像Instagram图片源或Facebook的。在加载一些图像(只有少数图像)后,我的Galaxy Nexus出现内存不足异常。我缩放了它们,但图像的数量并不是固定的,理论上可以是无限的。在Facebook和Instagram上,他们加载了大量的图像和其他数据,效果很好 你觉得怎么样?我能用原生Android编码实现这些性能吗? 如果我创建一个HTML5提要(比如Facebook和Instagram),我会避免内存问题吗 我觉得很奇怪,

我正在尝试创建一个Android ListView,它看起来像Instagram图片源或Facebook的。在加载一些图像(只有少数图像)后,我的Galaxy Nexus出现内存不足异常。我缩放了它们,但图像的数量并不是固定的,理论上可以是无限的。在Facebook和Instagram上,他们加载了大量的图像和其他数据,效果很好

你觉得怎么样?我能用原生Android编码实现这些性能吗? 如果我创建一个HTML5提要(比如Facebook和Instagram),我会避免内存问题吗

我觉得很奇怪,我需要做这么多的工作来处理来自服务器的图像的内存。如果这是唯一的解决方案,那么在本机ListView中管理数百张图片的方法是什么

我将感谢任何意见!
谢谢。

不要一次将它们全部加载到内存中,只将需要显示的图像加载到
位图
对象中;并确保加载的图像仅为需要显示的大小(不要完全加载1900x1200图像以显示300x200缩略图)。应用程序的堆大小约为30MB(取决于设备,但这是一个很好的经验法则),加载后,
位图将占用Width*Height*4内存字节

一种方法是在图像下载时将其缓存到磁盘上,这样图像就不必存储在内存中,并在下载图像之前始终检查缓存中的图像。您还可以使用缓存将少量图像加载到内存中,这些图像需要在当时显示在列表中

您还可以使用
BitmapFactory.Options.inSampleSize
选项在加载图像时减小图像的大小,而不是加载整个图像然后创建一个小副本,这样会浪费时间和内存


看一看:为了寻求帮助

我尝试了所有这些方法,在应用程序给出的列表中的6-8张图片之后仍然购买。当当前项目需要图片时,我在列表中设置了这些图片,我只做了一次。我没有发布代码,因为我想知道其他人是如何在一个列表视图中处理数百张图片的,如果可能的话。我们大多数人都是使用上述方法来完成的,因此,您的代码中一定有错误。您是否对50多个图像尝试过这种方法?像instagram订阅源一样?是的,我们已经在许多大型应用程序中这样做了。正如你可能从缺乏其他答案中看到的那样,这是一种常见的做法。