2011-05-24 69 views
3

更新:db-wal文件是如此之大。什麼是原因,我如何限制sqlite日誌文件的大小?Android數據庫大小在HTC Thunderbolt上不會降低

我正在使用SQLiteOpenHelper。當onUpgrade發生時,我將刪除每個存在我的應用程序的表。在機器人上,當我使用設置應用程序查看應用程序數據大小時,可以看到數據大小降低了。但是HTC Thunderbolt的數據量並沒有減少。更糟糕的是,當你開始再次使用我的應用程序時,Thunderbolt的數據庫將繼續增長。當我升級數據庫版本時,看起來好像數據庫會一直在Thunderbolt上增長。

我已經驗證了我只使用了一個數據庫,並且名稱相同,並且在刪除表之前數據庫中有數據。我期望在Thunderbolt上看到和我在機器人上一樣的行爲。有什麼辦法可以編程清除設備的所有數據?這並不理想,但它會比Thunderbolt的數據大小始終增長更好。

+0

從設備複製數據庫文件,如果可以的話,並檢查它是否正確。 – pawelzieba 2011-05-24 19:11:19

+0

你可能會給'VACUUM'聲明一個鏡頭,看看它是否有幫助:http://www.sqlite.org/lang_vacuum.html – CommonsWare 2011-05-24 20:46:03

+0

VACUUM似乎是一個好主意。但是id不起作用。也沒有添加WAL檢查點。 – 2011-05-25 20:41:36

回答

1

如果您使用SQLiteOpenHelper,則需要在應用程序結束時調用close。 api文檔提到您不需要關閉由它打開的所有SQLiteDatabase實例,但仍然必須在Helper上調用close,因爲它緩存並跟蹤所有打開的SQLiteDatabase實例。在不調用close的情況下,wal文件將繼續增長,以獲取getWriteableDatabase和getReadableDatabase返回的每個不同實例。