2010-11-12 85 views
0

实际上,我从Web中获取XML,解析并将其显示在屏幕上。我得到的问题是,每次调用活动时活动都会尝试从Web上加载数据(实际上,我的移动应用程序需要频繁访问服务器)因此,我在寻找以下解决方案:在重新启动活动时快速加载数据

On Re-launch of an activity, the data from web should not be loaded again. 
creating a class that i can use to transparently make application faster by 
selectively caching items in memory. And thus, making users very happy and 
This class can even apply individual refresh times to each cached item. 

所以,我想我需要将数据存储在缓存或类似的东西。

是否有任何方式/技术来实现这样的事情?因此无需每次都重新启动活动。

回答

1

不知道该建议的性能如何,但是如果您只是想避免每次重新启动活动时获取XML文件,最简单的方法就是将它们保存到Internal Storage。当您的活动(重新)启动时,您将开始检查文件是否存在本地,然后再从网上获取它们。

你当然需要找出一种逻辑来判断一个XML文件是否“过时”(你可能有一个简单的数据库表,其中包含文件名和最后提取的日期),你可能也想有一些清理逻辑来删除文件,当你不再需要它们时,它们不会填充不必要的空间。

+0

thanx的支持,它也是一个好主意 – 2010-11-15 06:30:06

1

您可以尝试使用Service以给定间隔在后台加载数据。

+0

ya它可以使用服务来完成,但是在重新启动一个活动时,它不应该从Web上获取数据(应该从缓存中加载数据或类似的东西,我认为这样做,数据加载速度增加,因此用户不需要等待更多) – 2010-11-12 06:36:39

+0

如下面的注释中所述,活动应该向服务请求数据,然后服务将返回缓存中的数据。如果缓存为空,则服务首先加载缓存并且该活动将不得不等待。下一次活动开始时,活动会直接获取数据,因为数据会被服务缓存。 – Christian 2010-11-12 07:16:09

+0

这也是更好的主意,但我需要从网络获取大数据和thanx的支持 – 2010-11-13 09:13:04

1

那么我会做的是做一个表,让我们说它称为“Table_Web_XML”,并在其中适当的领域,以存储特定的Web数据。

当开始活动时,我将首先检查数据库中是否有数据。如果表格为空(意味着第一次加载Activity),我会从网页加载并显示在屏幕上并保存在数据库中。另一方面,如果表中有数据,那么我会将它加载到屏幕上,并在后台启动一个服务,如果Web上有任何更改,它将更新我的数据库表。这样做的目的是从系统响应的角度来看,当活动重复打开时,数据将始终快速加载,后台服务将确保后续请求中有新内容。希望能帮助到你。

+0

你可以做,但有许多XML文件,所以每个XML,我应该为每个创建表? – 2010-11-12 07:03:15

+0

如果您的目的是快速加载您的应用程序,请确保您可以在单个数据库中创建更多表。这里的折衷是为每张桌子在几千字节的磁盘空间上妥协。 – 2010-11-12 08:00:44

+0

thanx的支持,但我该怎么做?如果你有任何示例/代码,那么请给我建议或给我一个方法! – 2010-11-12 12:14:44

相关问题