部署包含大量数据的应用程序的最佳方式

时间:2010-10-24 20:18:11

标签: android sqlite

我正在开发一个带有大量数据的Android应用程序。我本来希望只分发SQLite数据库,但从研究这一点可以清楚地看出数据库可以包含在内,但是必须从原始数据复制到数据,如果有好几MB的数据会不必要地占用空间。对于我的应用程序,数据都是文本/数字/日期,而在关系数据库中通常会占用四个表。非常简单,但有两份副本似乎很浪费。

我看到的选项是:

  1. 容忍重复的数据(这让我很痛苦)
  2. 在安装时,应用程序通过HTTP下载数据(我的负载可能会遇到挑战),可能是Google App Engine。
  3. 还有其他值得考虑的解决方案吗?

3 个答案:

答案 0 :(得分:2)

如果您将数据打包到res / raw文件夹中,它确实会被复制,并且在手机完成后,即首次运行后,无法删除不幸的数据。

你可以试验一个尺寸较小的数据 - 将数据打包为csv或xml文件,或者作为res / raw文件夹中的预编译数据包,如果可以接受最好的数据。 如果使用csv或xml文件选项,则可以在首次运行时运行解析器并将数据处理到数据库中。

我最近才找到的东西,但res / raw文件夹只能处理大约1mb的文件,这是我遇到的一个解决方案,用于打包大型数据库并在第一次运行时移动它,它没有克服应用程序中的数据:

Database Populating Solution

这是android blogspot的另一种选择,第三种可能正是你想要的:

  

下载程序活动在   你的申请开始和   确保一组文件具有   已从Web服务器下载到   手机的SD卡。下载器是   适用于需要更多的应用程序   本地数据可以放入.apk   文件。

Downloader Blogspot

可能适应此示例 - 从服务器下载数据库文件,然后将其移动到数据库文件夹中。

答案 1 :(得分:2)

我遇到了同样的情况:我正在编写一个必须访问的应用程序 - 本地 - 一个主要包含文本且重量超过20MB(压缩7MB压缩)的数据库。

我认为这种问题的最佳解决方案是在首次执行应用程序时下载压缩编译数据库。 这个解决方案的优点:

  • APK保持清晰。这很好,因为:
    • 非常大的APK可能会阻止某些潜在用户
    • 测试更快,因为将7MB + APK上传到AVD(就像我最初做的那样)非常慢。


  • 您的数据没有重复(如果您在解压缩后删除ZIP存档


  • 您没有填满用户的手机内存。实际上,您的应用应该将数据库直接下载到SD卡。在res / raw文件夹中包含大文件会给运行Android<的所有用户造成很大麻烦。 2.2,因为他们无法将应用程序移动到SD CARD(由于内部存储器上使用几MB的某些应用程序,我看到了一些负面的用户评论)。

最后一件事:我不建议包含CSV或XML,并在首次运行时从中填充数据库。原因是这将是非常缓慢的,并且这种处理不应该由每个客户完成。

答案 2 :(得分:1)

不是一个正确的答案,但关于选项1的主题:记住一个apk是一个zip,所以一个文本文件,反复包含相同的单词,会变得更小。