在android中处理大量图像的最佳实践

时间:2013-09-19 07:11:10

标签: android image performance

我在原生Android应用程序中加载了150个图像到2个不同的布局(自定义网格布局和自定义线性布局)(它就像一个图库:每个视图中相同的150个图像但不同大小 - 我需要这样做所以我可以在任一视图中快速切换到特定索引)。

有两种约束: 1.第一次通过网络可靠地加载(在本地缓存之后),并在传输过程中处理潜在的网络故障。图像已经尽可能压缩,同时保持可读性。 它们以异步方式加载,如果出现中断,它会尝试从服务器更新本地不可用的任何图像。然而,当发生这种情况时,会有一些延迟。

  1. 由于大量图像加载到内存中而导致内存问题。在达到阈值数量的图像后,应用程序变得有点慢。
  2. 我正在重复使用视图(当图像集被更改时),并推迟从UI线程中读取位图等内容。在这种应用程序中是否应该遵循其他最佳实践?

3 个答案:

答案 0 :(得分:4)

您可以使用Android-Universal-Image-Loader(https://github.com/nostra13/Android-Universal-Image-Loader)来处理大量图像。该库正确处理了图像缓存和内存泄漏。

答案 1 :(得分:1)

不用多说,但是在尺寸和文件大小方面,下载可以代表他们正在展示的那些地方的最小图像。使用压缩级别可以帮助后者。

另一个hacky解决方案是在服务器端组合图像网格,并简单地将单个结果图像发送到设备。如果图像因用户而异,并且每次打开应用程序时都会有所不同,这样做的好处就会减少。

答案 2 :(得分:0)

不要同时加载完整版面。使用名为getView的方法,它被调用然后单独的View出现在屏幕上。您需要覆盖此方法。