从服务器下载全新资产:最佳做法是什么?

时间:2012-03-05 14:49:05

标签: android download assets

我的应用程序使用AsyncTask从我的服务器下载一些资产,然后将它们放在SD卡上的文件夹中。然后,我在按钮背景中使用这些资源。一切正常,但我想知道在服务器端更改资产时使用的最佳实践。事实上,目前,我无法知道服务器资产是否与本地存储的资产相比是新资产。但是,我在考虑两种可能的解决方案: 1)应用程序检查服务器是否有新文件,例如一天两次。如果有新文件,则下载它们并在本地升级存储。在这种情况下:如何获取本地和服务器文件之间的时差?换句话说,我怎么知道服务器资产是一个新的服务器资产? 2)当新文件可用时,服务器向客户端发送通知。我该如何管理?

上述两者之间的最佳选择是什么?

4 个答案:

答案 0 :(得分:1)

您可以拥有资产的资产版本号。每次您的应用启动时,您都可以申请最新的资产版本号。如果它大于您存储的版本号,则表示图像已更改,您可以下载最新图像。每次服务器中的图像发生变化时,请确保增加版本号。

从服务器检索资产时,还应存储版本号。

答案 1 :(得分:1)

我认为选项2)(“当新文件可用时,服务器向客户端发送通知”)将需要在客户端上运行服务以“收听”通知 - >这太过分了

我会做的与您的选项1)类似,不同之处在于它独立于客户端和服务器的时钟:

对您的资产进行版本控制并存储:

  • 在服务器端,在txt或xml文件中,服务器上可用的每个资产的最新版本
  • 在客户端,每个资产的当前版本是最新版本号

在客户端,您将定期检索txt / xml文件,并确定是否需要下载新资产。

答案 2 :(得分:0)

您可以在服务器上添加一些代码来计算文件的MD5总和,然后从Android应用程序发出请求,例如http://hostname/getMD5?file=myfile.abc,如果MD5总和与本地不同,请再次下载该文件。

至于通知手机,我认为不可能。但是每30分钟左右轮询一次可能没问题,因为你只需要获取一个短字符串。

答案 3 :(得分:0)

向您的服务器添加version file,这样的简单操作就可以了:

version.txt:

image001.bmp 3
image002.bmp 1
image003.bmp 1

当您连接到服务器并解析它时,您可以首先下载此文件。然后,如果您在服务器上发现更新的版本,请下载更新的文件。