
我有一个Android应用程序,该应用程序需要脱机工作并且需要大量静态数据.
目前,我正在/ res / raw中使用JsON文件,并将其与Jackson解析器一起加载到我的POJO方案中.由于我有一个外部程序将生成此数据,因此它确实运行良好,并且偶尔会有更改时,我将向市场发布新版本,因此无需处理运行更新服务器和以此类推.
但是,现在我的JsON文件大约为2.5MB,用于测试的数据集有限,最后大约为5-10MB.
问题是解析文件已经花费了大约3-5秒的时间,并且每次重新启动应用程序时都需要这样做.
那么,我在这里有什么选择?我可以将数据放入sqlite数据库,但这将需要重写外部应用程序并相当大地更改数据结构.但是那时我只能查询当前需要的东西,而不能一次加载整个东西.
有没有更简单/更好的方法?另外,是否有一种很好的方法可以通过sqlite数据库发布应用程序?我发现的所有文章都谈到在第一次启动时为用户数据创建数据库,但这不是用户数据,我需要从Market进行部署.
解决方法:
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应用程序部署大量静态数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)