2012-01-06 87 views
2

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

现在,我有两种方法,我不知道要实施哪一种。方法如下:

  1. “每次活动加载时,调用Web服务并重新加载所有数据。”这当然是最简单的方法,但它是正确的吗?我的意思是,我有大约30个活动,其中一半负载数据,而另一半负责数据。据我所见,这种方法可能会成为一个问题,因为它可能会降低应用程序的速度。它也可以通过这么多的请求来增加我的云账单。而且我不知道每次刷新是否正确。
  2. “调用Web服务,每10分钟,所有的数据存储在SQLite数据库,且仅当它已经超过10分钟,或者甚至可能有一个刷新按钮更新数据。”这种方法可能是更好的方法,但我不确定是否值得编写这么多的代码。

我需要你的意见在决定正确的技术。数字2看起来不错,但如果有什么我不知道的东西,并且我没有理由写了所有额外的代码。

请帮我看看这里。如果还有更好的方法,请告诉我。

+0

提供的功能和数据的详细信息,如果您想更准确的答案 – zode64 2012-01-06 21:42:30

+1

whatsthebeef是正确的,就像你说的第一个解决方案是非常往往容易因此它也取决于你有你的第一个实施 – kingston 2012-01-06 21:46:42

+0

预算非常好的一点,复杂性是一个考虑因素 – zode64 2012-01-06 21:52:19

回答

1

这真的取决于数据的排序,需要什么样的延迟对数据和数据的数量。此外,项目的规模和从实施中获得的收益将作为复杂性增加。更准确的答案提供更多信息。

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

  1. 数据库存储,当数据需要处理(检索,查询等),或者是有大量的数据。

  2. 文件(一个或多个),如果使用的格式化数据如XML或JSON,你可以保持该结构的工作有时是有用的。您可以使用native android caching来协助管理存储。

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

本地缓存将降低带宽消耗(将最终节省了用户的钱是永远流行的),如果正确实施的内存和处理消耗。可能最重要的是(取决于数据),它可以允许在用户没有连接时有效使用应用程序。

顺便说30个活动听起来好像很多,你真的应该考虑减少通过跨活动共享功能,这应该提高导航,代码体积和内存占用。

UPDATE从评论

从有限的资料你的项目,你不想在文件被缓存完整的SOAP消息我会建议使用数据库作为数据存储(如果有的话),并且数量超过40+的记录可能使优先存储难以管理。

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

我不能得到一个明确的答案,因为还有非常有限的信息,但你需要评估加入这样的功能,你的项目,你将得到的好处的成本。

我一些其他的东西值得考虑这种高速缓存的时候提。

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

数据将以SOAP格式接收。数据并不复杂,由字符串,整数和布尔值组成。另外,我只打算检索最新的40条记录,因为数据库可以有100个,甚至数千个。 – harsimranb 2012-01-07 03:05:50

+0

至于30项活动,我遇到了这个:http://stackoverflow.com/a/6236518/487940,并有一个印象,30不会太多。目前,我正在修改UI,并尝试使用Tabs来减少活动数量。 – harsimranb 2012-01-07 03:10:23