4

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

你怎么看?我可以使用原生 Android 编码实现这些性能吗?如果我要创建 HTML5 提要(如 Facebook 和 Instagram),我会避免内存问题吗?

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

我将不胜感激任何意见!谢谢。

4

1 回答 1

5

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

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

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

高温高压

看看: http: //developer.android.com/training/displaying-bitmaps/index.html寻求帮助

于 2012-06-21T22:22:43.570 回答