HTC Thunderbolt 上的 Android 数据库大小不会减少

标签 android sql sqlite

更新:db-wal 文件太大了。原因是什么以及如何限制 sqlite 日志记录文件的大小?

我正在使用 SQLiteOpenHelper。当 onUpgrade 发生时,我正在删除我的应用程序存在的每个表。在机器人上,当我使用设置应用程序查看应用程序数据大小时,您可以看到数据大小像它应该的那样减少。但是对于 HTC Thunderbolt,数据大小并没有减少。更糟糕的是,当您再次开始使用我的应用程序时,Thunderbolt 的数据库会继续增长。当我升级数据库版本时,似乎数据库总是会在 Thunderbolt 上增长。

我已经验证我只使用了一个同名的数据库,并且在我删除表之前数据库中有数据。我希望在 Thunderbolt 上看到与在机器人上相同的行为。有什么方法可以以编程方式清除设备的所有数据吗?这并不理想,但总比让 Thunderbolt 的数据大小一直增长要好。

最佳答案

如果您使用的是 SQLiteOpenHelper,则需要在应用程序结束时调用关闭。 api 文档提到您不需要在它打开的所有 SQLiteDatabase 实例上调用关闭,但您仍然必须在 Helper 上调用关闭,因为它缓存并跟踪 SQLiteDatabase 的所有打开实例。如果不调用 close,wal 文件将针对 getWriteableDatabase 和 getReadableDatabase 返回的每个不同实例继续增长。

关于HTC Thunderbolt 上的 Android 数据库大小不会减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115279/

相关文章:

android - 如何在 Activity 的 OnCreate() 方法中调用 findViewWithTag?

java - 当第一个实体是具有指定主键的实体之后的后续实体时,如何使用 JPA 获取列表

sqlite - 在SQLite 3中删除行并引用另一个表中的行

android - 在我的 Nexus 4 上找不到使用 Phonegap 创建的目录和文件

java - 尝试关闭 HttpURLConnection

java - Android 设备中的帐户注册问题

mysql - 忽略不匹配的表

mysql - 如何从Mysql 5.5中的时间戳字段自动更新日期字段?

android - 房间持久性库查询 COLLATE LOCALIZED 不起作用

c# - 如何在 SQLite 中设置自动时间戳?