2013-04-25 22 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