【问题标题】:Downloading and storing images下载和存储图像
【发布时间】:2016-11-19 07:47:23
【问题描述】:

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

  1. 当用户使用 Volley 库 (Android) 上传图片时,是否首先需要将图片的相对/绝对路径保存到 MySQL 数据库,然后使用此信息获取 JSON 格式的图片回到设备上,应该缓存在哪里?

  2. 我在网上看到 Volley 库可以在设备上缓存图像和视频,这将有助于数据消耗,因此用户无需在每次再次登录时下载图像。但是,如果用户从 IOS 设备登录到应用程序并在那里上传图像,然后他们回到 Android 设备并在那里登录 - 应用程序需要更新他们的用户配置文件。

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

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

【问题讨论】:

  • 这是对您正在尝试做的事情的大量描述,并没有暗示实际的具体问题是什么。

标签: java android mysql android-fragments android-volley


【解决方案1】:
  1. 我认为您需要存储在数据库中的不是图像文件的路径,而是您传递给 Volley 的 URI。然后,当您想在 Volley 中显示图像传递保存的 URI 时,它将决定显示缓存的图像或从互联网上传。

  2. 好主意。我认为在您的情况下,您可以只显示缓存在 dp 中的数据,然后另外从服务器获取数据,然后更改缓存并显示新结果。您还可以实现长轮询、套接字或 GCM 来建立与服务器的连接并立即获取新的更新数据(在实际情况下,不是立即,而是更快,然后“转到应用程序 -> 从请求中检查服务器端是否有变化” )。

当然,请查看firebase 教程以考虑在您的服务器端实现这个东西,并通过立即更新本地缓存数据提供更有趣和方便的连接。 additional link to video tutroial

【讨论】:

  • 我有一些问题: 1. 所以你会建议将实际图像存储在 MySQL 数据库中?在大学里,我们总是被告知出于某种原因不要这样做。 2.我不完全理解你的意思 2.你的意思是“显示缓存在 dp 中的数据”你的意思是从缓存中显示图像并从服务器获取?如果您的意思是这不会再次重新加载所有图像吗?这将使用大量数据。对于“实现长轮询、套接字或 GCM”,我会使用 firebase 吗?谢谢
  • 1.我建议存储在数据库中的不是图像,而是图像的 URI。例如,它是您传递给 Volley 的 URL
  • 2.我的意思是您已经在 dp 中缓存了图像的 URI,或者缓存了用户配置文件的信息。没关系。然后你从 db 获取这些数据。如果是图像,您会从 db 中获取图像的存储 URI。然后在凌空的帮助下展示它。然后向服务器发出请求以获取新信息。然后如果它改变了缓存这个信息在数据库中并显示更新的信息。
猜你喜欢
  • 1970-01-01
  • 2016-12-28
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
相关资源
最近更新 更多