我的应用程序需要从服务器下载许多图像(每张图像大约10kb)。我只是简单地使用独立的AsyncTask
下载它们而没有任何优化。
现在我想知道转移这些图像的常见做法是什么。例如,我正在考虑在服务器上保存压缩图像,然后发送压缩文件供用户的手机解压缩。在这种情况下,最好将zip文件合并为一个大的zip文件供用户下载吗?
还是有更好的解决方案?提前谢谢!
编辑:
似乎合并zip文件是一个好主意,但我觉得用户等待下载和解压缩所有图像可能需要很长时间。所以我可以在每个zip文件中放置十到二十个图像,这样用户可以在等待更多的时候看到一些已下载的图像。将多个AsyncTask
一起解雇可以更快吗?但即使给出相同的文件大小和相同的地址,他们也不能同时完成下载?
答案 0 :(得分:1)
由于延迟通常是移动连接的最大问题,因此减少必须打开的连接数是优化加载时间的好方法。发送包含所有图像的zip文件听起来是一个非常好的主意,并且可能值得花时间实现。
答案 1 :(得分:0)
图像可能已经被压缩(gif,jpg,png)。您不会减少文件大小,但会减少连接数。哪个是移动设备的好主意。如果它总是相同的图像集,你可以使用一些精灵技术(发送一个包含所有图像但具有不同x / y偏移的较大图像文件,在html中你可以使用带有偏移的背景来显示正确的图像)。
答案 2 :(得分:0)
我正在查看侧边栏并看到this主题,但是当我看到评论时,您会询问有关修补的信息。
确保用户知道如何处理它的最佳方法。您希望用户下载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,那么这是一个小问题。