来自 SQLiteOpenHelper 的 VACUUM sqlite 数据库

VACUUM sqlite database from the SQLiteOpenHelper

我的应用程序的数据库不断增长,我想执行 VACUUM 来检索一些丢失的 space。据我了解,如果有其他交易,VACUUM 不会 运行。

我的问题是:如何 运行 来自 SQLiteOpenHelper 的命令? db.execSQL("VACUUM") 之类的东西有用吗?但是我如何在执行此操作时获得某种进展,以便我可以使用加载对话框阻止 UI?

您可以像其他 SQL 命令一样 运行 VACUUMexecSQL() 会起作用。

但是,没有跟踪进度的机制。

并且 SQLite 会自动重用空闲页面,因此 VACUUM 不太可能提供帮助。 (只有当你删除了大量数据,并且知道你不会再插入新数据时,它才有用。)