【问题标题】:Rapidly load data on Re-launch of an Activity在重新启动 Activity 时快速加载数据
【发布时间】:2010-11-12 06:15:41
【问题描述】:

实际上,我正在从网络上获取 XML,对其进行解析并将其显示在屏幕上。我遇到的问题是,每次调用活动时,活动都会尝试从网络加载数据。(实际上,我的移动应用程序需要经常访问服务器)所以我正在寻找以下解决方案:

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.

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

有什么方法/技术可以实现这样的事情吗?这样它就不需要每次重新启动活动时都加载。

【问题讨论】:

    标签: android xml android-xml android-internet


    【解决方案1】:

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

    您当然需要某种逻辑来判断 XML 文件是否“过时”(您可以有一个简单的数据库表,其中包含文件名和上次获取的日期),并且您可能还希望拥有某种清理逻辑,可在您不再需要文件时将其删除,以免占用不必要的空间。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,它可以使用服务来完成,但是在重新启动活动时,它不应该从网络上获取数据(数据应该从缓存或类似的东西中加载,我认为这样做可以提高数据加载速度,因此用户无需等待更多)
      • 正如下面评论中所述,活动应该向服务请求数据,然后服务将返回缓存中的数据。如果缓存为空,则服务首先加载它,并且活动将不得不等待。下次活动启动时,活动会直接获取数据,因为它会被服务缓存。
      • 这也是一个更好的主意,但我需要从网络上获取大量数据并感谢支持
      【解决方案3】:

      好吧,我要做的是制作一个表格,可以称之为“Table_Web_XML”,并在其中使用适当的字段来存储特定的网络数据。

      在启动 Activity 时,我会首先检查数据库中是否有数据。如果表是空的(意味着 Activity 是第一次加载),我会从 web 加载它并显示在屏幕上并保存在数据库中。

      另一方面,如果表中有数据,那么我会将其加载到屏幕上,并在后台启动一个服务,如果 Web 上的数据库表有任何更改,该服务将更新我的数据库表。从系统响应的角度来看,这将始终快速加载数据,当重复打开活动时,后台服务将确保后续请求的新内容和最新内容:)。希望对您有所帮助。

      【讨论】:

      • 可以,但是有很多xml文件,所以对于每个xml,我应该为每个创建表吗?
      • 如果您的目的是快速加载您的应用程序,请确保您可以在单个数据库中创建更多表。这里的权衡是为每个表妥协几千字节的磁盘空间。
      • 感谢您的支持,但我该怎么做呢?如果您有任何示例/代码,请建议我或告诉我一个方法!
      • @Paresh :) 是的,我很快就会发布它
      猜你喜欢
      • 2020-10-18
      • 2017-04-12
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多