2011-05-24 35 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返回的每个不同实例。