Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Android应用程序部署大量静态数据_Android_Database_Json_Sqlite_Loading - Fatal编程技术网

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

使用Android应用程序部署大量静态数据,android,database,json,sqlite,loading,Android,Database,Json,Sqlite,Loading,我有一个Android应用程序,需要离线工作,需要大量静态数据 目前,我在/res/raw中使用一个JSON文件,并使用Jackson解析器将其加载到我的POJO方案中。它工作得非常好,因为我有一个外部程序,它将生成这些数据,偶尔当有变化时,我会将新版本发布到市场上,这样我就不必运行更新服务器等等 然而,现在我的JSON文件大约是2.5MB,用于测试的数据集有限,最终大约是5-10MB 问题是解析文件已经需要3-5秒,每次重新启动应用程序时都需要这样做 那么,我的选择是什么?我可以将数据放在sq

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

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

然而,现在我的JSON文件大约是2.5MB,用于测试的数据集有限,最终大约是5-10MB

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

那么,我的选择是什么?我可以将数据放在sqlite数据库中,但这需要重写外部应用程序并对数据结构进行大量更改。但那时我只能查询我此刻需要的东西,而不能一次加载整个东西


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

JSON对此感觉是错误的方法-这是一种编码数据以传输的好方法,但基本上就是这样

如果能多了解一点你的应用程序的具体功能,那就太好了,但我很难想象在一个用例中,内存中有几MB的POJO是一个有效的解决方案。我认为使用SQLite会更好,这就是为什么:

我可以将数据放在sqlite数据库中,但这需要重写外部应用程序并对数据结构进行大量更改

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

如果您仍然希望在应用程序的其余部分使用POJO,那么编写一个从数据库检索数据并以与Jackson相同的方式创建对象的查询就很简单了

但那时我只能查询我此刻需要的东西,而不能一次加载整个东西

您在做什么,需要同时访问所有数据?搜索或排序一组对象总是比SQL查询要慢,以实现相同的目标

另外,是否有一种使用sqlite数据库发布应用程序的好方法

你当然可以把你的应用程序和数据库一起发布,尽管我个人还没有这么做。这是一个相关的问题:


希望这能有所帮助。

有一个名为JExcel的优秀API(只需谷歌一下),可用于.xls电子表格。如果您不打算进行任何选择,而只是从源代码加载数据,我喜欢使用Jetcel,因为它在桌面上更易于管理,并且生成更易于阅读的代码

但是,不确定是否存在任何性能差异。只是把我的2美分投进去