将大型静态文本数据添加到android

时间:2017-01-14 06:05:56

标签: android sqlite

我正在开发一个应用程序,它在很大程度上呈现了大量的静态文本信息。我打算让应用程序脱机,因此无法从服务器获取数据。正如我在许多帖子中已经讨论的那样,根据我的理解,我有以下选项:

  1. 将其存储在XML资源文件中
  2. 资产文件夹中的文本文件
  3. SQLite数据库
  4. 虽然最初我决定使用XML,但是对于正确的排序,过滤和数据索引等功能,SQLite非常方便。我读了hereherehere关于各种方法之间的权衡。现在,如果我在SQLite中存储数据:

    1. 我应该从哪里提供数据?我不是必须先将它存储在文本文件或Strings.xml中吗?
    2. 如果是,那么我需要解析XML (可能是多个文件)将其插入数据库表中
    3. 然后读取表以在Views中显示数据,从而导致冗余(因为我可以在解析XML之后直接填充视图)并且还将数据的大小增加一倍(XML和数据库)。我确定android studio中没有任何内容,比如“在生成apk时从某些资源中提供数据库,而不是将该资源作为apk的一部分捆绑”。所以我的问题基本上是如何有效地将SQLite用于大型静态文本数据?由于
      (对不起,如果我的描述有点冗长)

      编辑:在使用应用程序时也不会有数据操作。

2 个答案:

答案 0 :(得分:0)

要明确的是,您的问题更具描述性。 以下是关于如何在没有冗余处理的情况下解决此问题的观点:

以下是两个要处理的方案:

场景1:可用网络

步骤1:从服务器获取数据时,将数据转换为XML。现在创建一个AsynTask" ParseXML"它将解析XML。

步骤2:现在,在" ParseXML"的postExecute方法中做两件事。

一种是将解析后的数据存储到SQLite数据库中以供离线使用。

其次是直接将已解析的XML数据填充到您的视图中,正如您在问题中已经提到的那样,您可以将XML数据考虑在内并显示它。

我相信这样你就可以节省将数据存储到dB然后显示的时间。

场景2:互联网不可用时离线显示数据 正如您所说,从SQLite查询数据并显示在您的UI上。

另外,为了回答你的问题的其余部分,你不是在浪费内存,因为你需要离线存储,而SQLite对于需要进一步处理的这种存储是有效的。

答案 1 :(得分:-1)

我认为你应该使用 Green DAo 这是一个开源的Android ORM。 它易于处理数据。它提供了轻松访问,插入/更新和删除数据的工具。

阅读此http://greenrobot.org/greendao/