我认为SQLite日志只会在有待处理的操作时保留在文件系统中。
然而,在我看来,至少在Android 4.1+中,正常的行为是SQLite日志保留在文件系统中,即使将事务设置为成功/结束,甚至关闭数据库。
是否有人知道此行为发生变化的原因和时间?
答案 0 :(得分:5)
@CL是对的,日志模式似乎会根据API级别而改变(也许制造商也会改变?)。
但是,为了将来参考,我在几个API级别查询了数据库中的journal_mode,结果是:
获取日记帐模式的代码:
Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
c.moveToFirst();
String journalMode = c.getString(c.getColumnIndex("journal_mode"));
关于期刊模式:
DELETE日记记录模式是正常行为。在DELETE模式下,在每个事务结束时删除回滚日志。实际上,删除操作是导致事务提交的操作。
TRUNCATE日记模式通过将回滚日志截断为零长度而不是删除它来提交事务。在许多系统上,截断文件比删除文件要快得多,因为不需要更改包含目录。
PERSIST日记记录模式可防止在每个事务结束时删除回滚日志。相反,日志的标题被零覆盖。这将阻止其他数据库连接回滚日志。 PERSIST日记模式在平台上的优化非常有用,其中删除或截断文件比用零覆盖文件的第一个块要昂贵得多。
答案 1 :(得分:2)
显然,Android版本的默认journal_mode setting不同。