0

我在原生 android 应用程序中将 150 个图像加载到 2 个不同的布局(自定义网格布局和自定义线性布局)中(它就像一个画廊:每个视图中相同的 150 个图像但大小不同 - 我需要这样做,这样我才能真正切换快速到任一视图中的特定索引)。

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

  1. 由于大量图像加载到内存中导致的内存问题。在达到阈值数量的图像后,该应用程序变得有点慢。

我正在重用视图(当图像集更改时),并推迟诸如从 UI 线程读取位图之类的事情。在这种应用程序中我应该遵循其他最佳实践吗?

4

3 回答 3

4

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

于 2013-09-19T07:46:52.690 回答
1

不言而喻,但就尺寸和文件大小而言,下载您可以代表它们正在显示的那些地方的最小图像。使用压缩级别可以帮助后者。

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

于 2013-09-24T06:39:27.690 回答
0

不要同时加载完整的布局。使用名为 getView 的方法,调用该方法后屏幕上会出现单独的 View。您需要重写此方法。

于 2013-09-19T07:17:07.413 回答