2016-07-16 115 views
0

我目前正在使用Fragments,我的一个片段是“用户配置文件”,其中登录的用户可以编辑和查看他们自己的配置文件。这个大学项目的一个要求是用户需要能够上传个人资料图片,并将其分配给他们的用户个人资料并保存在服务器上(我目前在Linux上使用Lampp)。我有以下问题:下载并存储图像

  1. 当用户上传使用凌空库(安卓)的图像它首先需要将图像保存到MySQL数据库的相对/绝对路径,然后利用这些信息将JSON格式的图像放回到设备上,并将其缓存到哪里?

  2. 我在线阅读了Volley图书馆可以缓存设备上的图像和视频,这将有助于数据消费,因此用户无需每次重新登录都需要下载图像。但是,如果用户从IOS设备登录到应用程序并在那里上传图像,然后又回到Android设备并登录 - 那么该应用程序需要更新其用户配置文件。

我的想法是每一个新的图像上传到其上传的时间将被添加到一个数据库中的日期/时间插槽中的服务器的时候,那么这个时候存储的是SQLite的数据库和MySQL数据库,每次他们打开应用程序,它向MySQL数据库请求这个时间字段的请求,如果没有添加图像,那么SQLite时间和刚才从MySQL数据库中提取的时间是相同的,所以不需要下载任何图像 - 我认为这将是一种简单的检查方式,而不需要使用大量数据?或者有人可以提出更好的选择。

但是,我的上述建议的问题是说,例如有5个图像缓存在设备上,但第六个图像是从另一个设备添加的,当我们回到原始设备时,我们如何才能下载新的图片?而不是所有其他5个已经在缓存中的5个?

+0

这是对你想要做什么的描述的一大堆,并没有暗示什么是实际的具体问题。 – tadman

回答

1
  1. 我认为你需要存储在数据库没有路径图像文件,但你传递到Volley的URI。然后,当您想在Volley中显示图像传递保存的URI时,它将决定显示缓存的图像或从互联网上传。

  2. 好想法。我认为在你的情况下,你可以只显示缓存在dp中的数据,然后额外从服务器获取数据,并将其更改为缓存并显示新结果。此外,您可以实现长轮询,套接字或GCM来设置与服务器的连接并立即获取新的更新数据(实际情况下不是立即更快,而是“更快地转到应用程序 - 如果服务器端发生更改, )。

,当然还有,请看看到firebase教程想想在你的服务器端实现这件事情,并提供与本地缓存数据的即时更新更有趣,更covenient连接。 additional link to video tutroial

+0

我有一些问题: 1.所以你会建议将实际的图像存储在MySQL数据库?出于某种原因,我们总是被告知大学不要这样做。 2.我不完全理解你的意思是2.你的意思是“show data cache in dp”,你的意思是从缓存中显示图像,并从服务器获取?如果你的意思是这不会重新加载所有的图像?这将使用大量的数据。而对于“实现长时间轮询,或套接字,或GCM”,我会只使用firebase?谢谢 – AmberHelpSK

+0

1.我建议存储在db不是图像,而是图像的URI。例如,它是您传入Volley的URL。 –

+0

2.我的意思是说您已经在dp中缓存了图像的URI,或者缓存了用户配置文件的信息。没关系。然后你从数据库中获取这些数据。在图像的情况下,您从数据库中获取图像的URI。然后在排球的帮助下展示它。然后向服务器请求获取新信息。然后,如果它更改缓存这个信息在DB和显示更新的信息。 –

相关问题