2013-04-25 59 views
2

最近我正在开发android和blackberry的应用程序。 我需要做的是在项目中存储一个32MB的Sqlite文件作为应用程序使用的初始数据库。在Android的情况下,它很简单,我可以轻松地将这个大文件存储在assest文件夹中,但我很难尝试在黑莓手机上进行这项工作,原因在于根据RIM公告,应用程序大小不应大于15 MB。如何在黑莓项目中存储32 MB文件

http://forums.crackberry.com/blackberry-os-apps-f35/rim-explains-app-memory-limit-637544/

任何人可以帮助我,如果有任何其他的把戏打击来实现这一目标。 在应用程序启动期间下载32 MB文件不是一个好主意。将用户导航到应用程序需要很长时间。

非常感谢提前。 任何帮助将不胜感激。

+1

唯一能做的就是在用户第一次打开应用程序时从WS下载数据,然后将其保存到sqlite数据库或文件中。但是如此庞大的数据量,用户只会退出,或者他们可能会被运营商收费等。您真的需要32MB吗? – 2013-04-25 07:47:41

+0

是的,我需要这个大型数据文件,我们有网络支持,我们也可以从网络服务器获取数据。但客户端也需要数据库的本地存储,因此无法使用网络。 – 2013-04-25 07:57:31

+0

我肯定会推荐下载**背景中的文件**,所以你不要屏蔽UI线程。让用户在数据库下载时继续使用该应用程序。这也许够大,你可能还需要将文件分割成多个部分,因此,如果用户退出或下载完成之前断开连接时,你会不会有下一次下载其100%。然后,在完成下载时重新组合文件。 – Nate 2013-04-25 08:35:54

回答

1

我一直在思考这个昨天下班后,我想你也可以尝试,包括数据库包含相同的数据,但在压缩格式,如第一次应用程序运行时,您创建和填充从它更大的本地sqlite数据库,然后删除压缩的数据。例如,您可以为每个表创建CSV转储,并将其保存到.csv文件(即:table.csv)。然后你可以将每个文件分别压缩成一个文件(即:table.gz)。然后,您为应用程序编译第二个资源模块中的每个压缩文件(即:res_module.cod)。安装应用程序时,该模块也会安装并将其文件复制到SDCard。然后主模块从SDCard中读取文件,解压缩它们并从中填充每个表格。之后,您可以以编程方式卸载assests模块并删除sdcard临时文件。这项工作的要求是压缩文件应小于14 MB以适合一个鳕鱼文件。

至于数据库模式,可能是导出格式已经存在,否则你可以制作自己的格式,或者数据库不太可能改变,然后硬编码(坏习惯)。

+0

不错,但很复杂。根据RIM的限制,我们只能在资源文件夹中存储7-8 MB原始文件,并且在将资源文件夹中包含图像后,我只有5 MB空间。可能是CSV文件将少于5 MB。 – 2013-04-26 12:30:50

+0

这取决于要压缩的数据的性质。也许你可以做一个快速测试,并在gzip中压缩整个.db文件(我最初认为csv文本文件假设sqlite文件会由于开销而变大)。这会让你对压缩率达到一个大致的概念以及它是否适合你的可用空间。 – 2013-04-26 12:56:39

+0

史密斯先生@我尝试将一个压缩数据库插入到我的src文件夹中,但只要我复制到我的源文件夹中即可。它停止运行应用程序并说: - 没有入口点.....是否有东西,我错过了。 – 2013-05-01 10:07:19