android - 使用 Android 应用程序部署大量静态数据

标签 android database json sqlite loading

我有一个 Android 应用程序需要离线工作并且需要大量静态数据。

目前,我在/res/raw 中使用一个 JSON 文件,并使用 Jackson 解析器将其加载到我的 POJO 方案中。它工作得非常好,因为我有一个外部程序会生成这些数据,偶尔当有变化时,我会向市场发布新版本,这样我就不必处理运行更新服务器和等等。

但是,目前我的 JSON 文件大约有 2.5MB,用于测试的数据集有限,最终大约为 5-10MB。

问题是解析文件已经需要大约 3-5 秒,每次重新启动应用程序时都需要这样做。

那么,我在这里有哪些选择?我可以将数据放入 sqlite 数据库,但这需要重写外部应用程序并大量更改数据结构。但是那时我只能查询我目前需要的东西,而不是一次加载整个东西。

有没有更简单/更好的方法?另外,有没有什么好的方法可以使用sqlite数据库发布应用程序?我找到的所有文章都谈到在第一次启动时为用户数据创建数据库,但这不是用户数据,我需要从市场部署它。

最佳答案

JSON 感觉像是一种错误的方法 - 它是一种对数据进行编码以进行传输的好方法,但仅此而已。

如果能提供更多关于您的应用程序具体功能的信息会很好,但我很难想象内存中有几 MB 的 POJO 是一种有效解决方案的用例。我认为使用 SQLite 会好得多,这就是原因:

I could put the data to a sqlite database, but that would require rewriting the external application and changing the data structure quite a bit.

您仍然可以使用其他程序的 JSON 输出,但不是使用 Jackson 将所有内容加载到 POJO 中,您可以在首次应用启动时填充数据库。这样,如果数据集未更改,应用程序启动时间可以忽略不计。

如果您仍想在应用程序的其余部分使用 POJO,那么编写一个从数据库中检索数据并以与 Jackson 相同的方式创建对象的查询将是微不足道的。

But then I could only query the things I need at the moment and not loading the entire thing at once.

您在做什么需要同时访问所有数据?搜索或排序一组对象总是比 SQL 查询来实现同样的事情要慢。

Also, is there a good way to publish the app with the sqlite database?

您绝对可以将您的应用程序与数据库一起发布,尽管我个人并没有这样做。这是一个相关的问题:

By Default load some data into our database sqlite

希望对您有所帮助。

关于android - 使用 Android 应用程序部署大量静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056548/

相关文章:

json - 了解 JSON Schema 草稿版本 4 中的 "additionalProperties"关键字

android - fragment布局不能引用?

iOS 解析如何通过 URL 下载文件

ajax - JSON-P 回调函数应该接受字符串吗?

database - 在现实世界的开发中,你真的把数据库文件放在你的 Visual Studio 项目中吗?

database - 每条消息的前 10 条评论

json - 使用 jq 对 JSON 进行反规范化

android - sdk 文件夹中缺少 Appcompat

android - React native/安卓直播播放器

Android:使用动画显示/隐藏 View