android - 我应该选择什么——JSON 还是 SQLite?

标签 android json android-sqlite

<分区>

在我的应用程序中,在每次启动时,首先必须从服务器下载一些 JSON,然后我需要通过在整个应用程序生命周期中解析此数据来显示各种信息。 JSON 对象相当大,有将近 5000 个 JSONArray。每个 JSON 数组都具有以下形式:

[37,101,"The Blocks Problem",9952,0,1000000000,0,852,0,0,11197,0,16606,0,7279,200,18415,5325,14492,3000,1]

所以我有两个选择:

  1. 将 json 字符串保存到文件中,稍后读取。
  2. 将近 10 列和 5000 行的 JSON 数组保存在 SQlite 数据库中。

第一个选项似乎很有效。但后来我不得不操纵 JSON 来显示各种信息。在某些情况下,我需要搜索整个数组以选择数组信息,并且有很多这样的情况。所以这也将非常耗时。

第二个选项更适合更快地搜索和显示。所以我选择了第二个选项。但是一次插入 5000 行也很耗时。为了改进,我在 AsyncTask 中完成了它,但它执行起来花费了太多时间 - 解析 JSON 并存储在 SQlite 表中。

那我该怎么办呢?存储如此庞大的信息并在以后高效使用它的最佳方式是什么?

最佳答案

我今天回答了一个非常接近这个的问题 - File or Database? - Best Practice to save Objects on Android-Device .我想补充一点,如果插入 5000 行花费的时间太长,请尝试将它们全部添加到单个事务中,或者使用批量加载机制。值得努力找出您的插入问题而不是尝试使用文件。

参见 this tutorial关于批量加载SQLite

关于android - 我应该选择什么——JSON 还是 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028619/

相关文章:

Android:视频录制抛出错误

当我使用 AsyncTask 和 HTTPS 时出现 android.os.NetworkOnMainThreadException

json - jq 1.5 - 更改现有元素或添加新元素(如果不存在)

android - 如何从 SQLite 数据库的特定行获取值?

Android(eclipse)PNG透明度显示为黑色(附图片示例)

android - 应用内购买中未列出的Youtube视频

json - 带有已安装库的 Python 3.1 推特帖子,

json - 获取 400 错误请求原因 :required from google cloud stoarge json api

java - 在 Android 中获取 "SQLiteException: no such column"

android - Robolectric 访问数据库抛出错误