android - 使用 Android 从云端检索数据

标签 android web-services azure theory

我正在编写一个社交网络 Android 应用程序。我已经在 Microsoft Azure 上创建了一个带有数据库的 .Net Web 服务,我计划调用该 Web 服务从云中获取数据并将其显示给用户。与 Facebook 类似。

现在,我想到了两种方法,但不确定要实现哪一种。方法如下:

  1. “每次加载 Activity 时,调用 Web 服务并重新加载所有数据。”这当然是最简单的方法,但它是正确的吗?我的意思是,我有大约 30 个 Activity ,其中一半加载数据,另一半发布数据。据我所知,这种方法可能是一个问题,因为它可能会减慢应用程序的速度。如此多的请求还会增加我的云费用。而且不知道每次都重新加载是否正确。
  2. “每 10 分钟调用一次 Web 服务,并将所有数据存储在 SQLite 数据库中,仅在超过 10 分钟时更新数据,甚至可能有刷新按钮。”方法可能是更好的方法,但我不确定它是否值得编写这么多代码。

我需要您的建议来决定正确的技术。第 2 号看起来不错,但如果有什么我不知道的东西,并且我无缘无故地编写了所有额外的代码怎么办?

请帮帮我。如果有更好的方法,请告诉我。

最佳答案

这实际上取决于数据的类型、数据需要什么样的延迟以及数据的数量。此外,随着复杂性的增加,项目的规模和您从实现中获得的好处也会增加。如需更准确的答案,请提供更多信息。

在这种情况下,本地缓存可能是一个非常好的主意。这是相当常见的做法,并且可以使用多种机制。根据从 Web 服务检索的数据格式,您可以存储在

  1. 数据库,当数据需要处理(搜索、查询等)或有大量数据时。

  2. 文件,如果您正在使用 xml 或 json 等格式化数据,有时很有用,因为您可以维护结构。您可以使用 native android caching协助管理存储。

  3. 当数据是简单类型(和字符串)并且数据不多时的首选项。

本地缓存将减少带宽消耗(最终会为用户节省金钱,这一直很受欢迎),并且如果实现正确,内存和处理消耗也会减少。可能最重要的是(取决于数据),它可以在用户没有连接时有效地使用应用程序。

顺便说一句,30 个 Activity 听起来很多,您确实应该考虑通过跨 Activity 共享功能来减少 Activity ,这应该会改善导航、代码量和内存占用。

更新来自评论

根据有关您的项目的有限信息,我建议使用数据库作为您的数据存储(如果有),因为您不想在文件中缓存完整的 SOAP 消息,并且 40 条以上的记录数量可能会优先存储难以管理。

但是,正如我之前提到的,您需要考虑复杂性。使用数据库时,您必须创建一种与 SOAP 对象的反序列化分开的构造方法(可能是某种 ORM),因为从技术上讲,您将使用 2 种独立的持久数据格式。

我无法得到明确的答案,因为信息仍然非常有限,但您需要评估向您的项目添加此类功能的成本以及您将获得的好处。

在考虑这种缓存时,我几乎没有其他值得一提的事情。

  • 您将如何管理缓存、缓存的大小和数据完整性。
  • 反序列化 SOAP 对象后,何时会进行缓存?你什么时候完成数据?等等..
  • 如何决定何时使用缓存以及何时访问网络?

关于android - 使用 Android 从云端检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764784/

相关文章:

python - 如何使用Python将批量数据插入Cosmos DB?

android - 使用appcompat时minSDK有什么意义?

android - 调用 retrofit.Call<> 时出现 NullPointerException

android - 将图像从 ImageView 设置为 Dialog

android - 谷歌玩 GamesClient 错误 6500

java - 从 Rest-Webservice 发送 Json [Gson 实现]

Azure key 保管库 : How to validate user has access

web-services - 使用 Soap 请求发送客户端证书和授权 header 的理想方式是什么

java - 将 REST 和 SOAP 服务合并在同一个类中?

azure - 使用Puppet将Azure客户端安装到所有节点