我正在开发一个带有大量数据的Android应用程序。我本来希望只分发SQLite数据库,但从研究这一点可以清楚地看出数据库可以包含在内,但是必须从原始数据复制到数据,如果有好几MB的数据会不必要地占用空间。对于我的应用程序,数据都是文本/数字/日期,而在关系数据库中通常会占用四个表。非常简单,但有两份副本似乎很浪费。
我看到的选项是:
还有其他值得考虑的解决方案吗?
答案 0 :(得分:2)
如果您将数据打包到res / raw文件夹中,它确实会被复制,并且在手机完成后,即首次运行后,无法删除不幸的数据。
你可以试验一个尺寸较小的数据 - 将数据打包为csv或xml文件,或者作为res / raw文件夹中的预编译数据包,如果可以接受最好的数据。 如果使用csv或xml文件选项,则可以在首次运行时运行解析器并将数据处理到数据库中。
我最近才找到的东西,但res / raw文件夹只能处理大约1mb的文件,这是我遇到的一个解决方案,用于打包大型数据库并在第一次运行时移动它,它没有克服应用程序中的数据:
这是android blogspot的另一种选择,第三种可能正是你想要的:
下载程序活动在 你的申请开始和 确保一组文件具有 已从Web服务器下载到 手机的SD卡。下载器是 适用于需要更多的应用程序 本地数据可以放入.apk 文件。
可能适应此示例 - 从服务器下载数据库文件,然后将其移动到数据库文件夹中。
答案 1 :(得分:2)
我遇到了同样的情况:我正在编写一个必须访问的应用程序 - 本地 - 一个主要包含文本且重量超过20MB(压缩7MB压缩)的数据库。
我认为这种问题的最佳解决方案是在首次执行应用程序时下载压缩编译数据库。 这个解决方案的优点:
最后一件事:我不建议包含CSV或XML,并在首次运行时从中填充数据库。原因是这将是非常缓慢的,并且这种处理不应该由每个客户完成。
答案 2 :(得分:1)
不是一个正确的答案,但关于选项1的主题:记住一个apk是一个zip,所以一个文本文件,反复包含相同的单词,会变得更小。