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

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

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


在以上两种方法中,最好的选择是什么?

您可以在服务器上添加一些代码来计算文件的MD5总和,然后从Android应用程序请求,例如,如果MD5总和与本地总和不同,请再次下载该文件


至于通知电话,我认为那是不可能的。但是每30分钟左右轮询一次也可以,因为您只需要获取一个短字符串。

您可以为您的资产提供一个资产版本号。每次应用启动时,您都可以请求最新的资产版本号。如果其大于您存储的版本号,则说明图像已更改,您可以下载最新的图像。每次在服务器中更改映像时,请确保增加版本号

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

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

我所做的与您的选项1)类似,只是它独立于客户端和服务器的时钟:

对资产进行版本设置,并存储:

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

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

版本文件添加到服务器,类似下面这样的简单操作将起作用:

version.txt:

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


当您连接到服务器并对其进行解析时,可以首先下载该文件。然后,如果您注意到服务器上有更新的版本,请下载更新的文件。

好吧,我想我会使用这种方法并接受您的答案,因为您是最快的。谢谢!:)