我目前正在使用Fragments,我的一个片段是“用户个人资料”,其中登录用户可以编辑和查看他们自己的个人资料。这个大学项目的要求之一是用户需要能够上传个人资料图片,并且应该将其分配给他们的用户个人资料并保存在服务器上(我目前在Linux上使用Lampp)。我有以下问题:
当用户使用Volley库(Android)上传图像时,首先需要将图像的相对/绝对路径保存到MySQL数据库,然后使用此信息以JSON格式获取图像回到设备上,它将被缓存?
我在网上看到,Volley库可以在设备上缓存图像和视频,这有助于数据消费,因此用户无需在每次重新登录时下载图像。但是,如果用户从IOS设备登录到应用程序并在那里上传图像然后他们返回到Android设备并登录那里,应用程序需要更新其用户配置文件。
我的想法是,每次将新图像上传到服务器时,上传的时间都会被添加到数据库中的日期/时间位,然后这次存储的是SQlite DB和MySQL DB,每次都是他们打开应用程序,它向MySQL DB发出请求此时间字段的请求,如果没有添加图像,那么SQLite时间和从MySQL数据库中提取的那个将是相同的,所以不需要下载任何图像 - 我想这将是一种不使用大量数据的简单方法吗?还是有人可以提出更好的选择。
然而,我的上述建议的问题是,例如,设备上缓存了5个图像,但是从另一个设备添加了第6个图像,当我们返回到原始设备时,我们如何才下载新图像?并不是所有其他5个已经在缓存中?
答案 0 :(得分:1)
我认为你需要存储在db not path to image文件中,而是存入你传入Volley的URI。然后,当你想在Volley中显示图像传递保存的URI时,它将决定显示缓存的图像或从互联网上传。
好主意。我认为在您的情况下,您可以只显示在dp中缓存的数据,然后另外从服务器获取数据,并更改缓存并显示新结果。您还可以实现长轮询,或套接字,或GCM以建立与服务器的连接并立即获取新的更新数据(在实际情况下不是立即但更快然后#34;转到应用程序 - >如果有更改,请从请求中检查在服务器端")。
当然,请查看firebase教程,考虑在服务器端实现此功能,并提供更有趣,更方便的连接,并立即更新本地缓存数据。 additional link to video tutroial