使用Android从云中检索数据

时间:2012-01-06 21:31:23

标签: android web-services azure theory

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

现在,我有两种方法,我不确定要实施哪种方法。方法如下:

  1. “每次活动加载时,都要调用Web服务并重新加载所有数据。”这当然是最简单的方法,但是它是对的吗?我的意思是,我有大约30个活动,其中一半加载数据,而另一半加载数据。据我所知,这种方法可能是一个问题,因为它可能会减慢应用程序的速度。它还可以通过如此多的请求增加我的云账单。而且我不知道每次重装是否正确。
  2. “每隔10分钟调用一次web服务,并将所有数据存储在SQLite数据库中,只有在超过10分钟时才更新数据,或者甚至可能有刷新按钮。”这方法可能是更好的方法,但我不确定是否值得编写这么多代码。
  3. 在决定正确的技术时,我需要你的建议。 2号看起来不错,但是如果有什么我不知道的话,我会毫无理由地写下所有额外的代码。

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

1 个答案:

答案 0 :(得分:1)

这实际上取决于数据类型,数据需要什么样的延迟以及数据量。此外,项目的规模和实施的好处将增加复杂性。有关更精确的答案,请提供更多信息。

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

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

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

  3. 首选项,当数据是简单类型(和字符串)时,并没有太多。

  4. 本地缓存将减少带宽消耗(最终将节省用户总是流行的资金),并且如果正确实现内存和处理消耗。可能最重要的(取决于数据)它可以允许在用户没有连接时有效地使用应用程序。

    顺便说一下,30个活动听起来很多,你应该真正考虑通过跨活动共享功能来减少这些活动,这应该可以改善导航,代码批量和内存占用。

    来自评论的

    更新

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

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

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

    在考虑这种缓存时,我还有其他一些值得一提的东西。

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