我有一个需要离线工作且需要大量静态数据的Android应用。
目前我在/ res / raw中使用JSON文件,并将Jackson解析器加载到我的POJO方案中。它工作得非常好,因为我有一个外部程序将生成这些数据,偶尔当有变化时我会向市场发布新版本,所以我不必处理运行更新服务器和等等。
但是,现在我的JSON文件大约是2.5MB,有限的数据集用于测试,最后它将大约为5-10MB。
问题是解析文件大约需要3-5秒,每次重启应用程序时都需要这样做。
那么,我的选择是什么?我可以将数据放到sqlite数据库中,但这需要重写外部应用程序并更改数据结构。但后来我只能查询我现在需要的东西,而不是一次性加载整个东西。
有更简单/更好的方法吗?另外,有没有一种方法可以使用sqlite数据库发布应用程序?我发现的所有文章都谈到在第一次启动时为用户数据创建数据库,但这不是用户数据,我需要从市场部署它。
答案 0 :(得分:4)
关于你的应用程序究竟有什么更多的信息会很高兴,但是我很难想象一个用例,在内存中有几MB的POJO是一种有效的解决方案。我认为使用SQLite会好得多,这就是原因:
我可以将数据放到sqlite数据库中,但这需要重写外部应用程序并更改数据结构。
你仍然可以使用你的其他程序的JSON输出,但是你可以在第一次应用程序启动时填充数据库,而不是用Jackson将所有内容加载到POJO中。这样,如果数据集未更改,则应用程序启动时间可以忽略不计。
如果您仍想在应用程序的其余部分使用POJO,那么编写一个从数据库中检索数据的查询,并以与Jackson相同的方式创建对象,这一点很简单。
但是我现在只能查询我需要的东西,而不是一次性加载整个东西。
您在做什么需要立即访问所有数据?搜索或排序一组对象总是比SQL查询慢,以实现同样的目的。
此外,是否有一种使用sqlite数据库发布应用程序的好方法?
你绝对可以通过数据库运送您的应用程序,但我个人并没有这样做。这是一个相关的问题:
By Default load some data into our database sqlite
希望有所帮助。
答案 1 :(得分:0)
有一个很棒的API,叫做JExcel(只是google),适用于.xls电子表格。如果您不打算进行任何选择并且只是从源加载数据,我喜欢使用JExcel,因为它更易于从桌面管理并产生更易于阅读的代码。
不确定是否存在任何性能差异。只要投入我的2美分:p