0

我的应用程序需要从服务器下载许多图像(每个图像大约 10kb 大)。而且我只是在AsyncTask没有任何优化的情况下独立下载它们中的每一个。

现在我想知道传输这些图像的常见做法是什么。例如,我正在考虑将压缩图像保存在服务器上,然后将压缩文件发送给用户的手机进行解压缩。在这种情况下,将 zip 文件合并成一个大 zip 文件供用户下载是否更好?

还是有更好的解决方案?提前致谢!

编辑:

似乎合并 zip 文件是一个好主意,但我觉得用户等待下载和解压缩所有图像可能需要很长时间。所以我可能会在每个 zip 文件中放十或二十张图片,这样用户就可以在等待更多图片的同时看到一些下载的图片。多个AsyncTask同时开火会更快,对吧?但是即使给定相同的文件大小和相同的下载地址,它们也不会同时完成?

4

3 回答 3

1

由于延迟通常是移动连接的最大问题,因此减少必须打开的连接数量是优化加载时间的好方法。发送包含所有图像的 zip 文件听起来是个好主意,并且可能值得花时间实施。

于 2013-06-25T15:49:49.470 回答
0

我正在查看侧边栏并看到了这个主题,但是当我看到评论时,您正在询问有关修补的问题。

确保用户知道如何处理它的最佳方法是。您希望用户下载 X 文件并将 Y 输出用于不同目的。另一方面,似乎常见的做法是为那些不是 Android 应用程序原生且无法放入 APK 的资源块。

一个类似的例子是 JDIC 应用程序,它使用流行的日语资源,同时用于英语翻译。像 WWWJDIC 这样的 JDIC 应用程序使用在线下载非常大的参考文件,否则这些参考文件会在 Google 服务器上产生不良延迟(之前已经提到过)。除非它是 3D 的,否则在 Google 应用程序上拥有 >200 MB 也是不好的代表,这是合理的。如果您的图像在应用程序本身加载时间过长的情况下无法压缩,您可能需要考虑此选项。唯一的缺点是请求在线连接(之前也提到过)。

此外,您可以使用 7zip 和 Android 程序将其自解压到某个位置。http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables

另一方面,用户最好在初次启动时对应用程序执行例行检查,同时进行一次性下载。然后,您可以选择放入一个AsyncTask,以便您的文件将被下载到应用程序并在重新启动后或您想要的任何情况下使用,因此您真的只需要一个AsyncTask. 这样做的好处是用户在应用程序上同步,他可能只需要检查一次。缺点是用户可能并不总是能够更新并且可能需要使用 4G 或 LTE,但如果他可以随时使用 WiFi,这将是一个小问题。

于 2013-06-26T06:48:08.817 回答
0

图像可能已经压缩(gif、jpg、png)。您不会减少文件大小,但会减少连接数。这对移动设备来说是个好主意。如果始终是同一组图像,您可以使用一些精灵技术(发送一个更大的图像文件,其中包含所有图像但具有不同的 x/y 偏移量,在 html 中,您可以使用带有偏移量的背景来显示正确的图像)。

于 2013-06-25T15:52:19.033 回答