是否有方法检测SQLite连接何时关闭?我正在尝试集成SQLCipher,这是初始化方法:
fun initialize(passphrase: String): Boolean {
this.passphrase = SQLiteDatabase.getBytes(passphrase.toCharArray())
this.factory = SupportFactory(this.passphrase, PasswordValidationHook(), false)
return try {
myDatabase = Room.databaseBuilder(
context.applicationContext,
MyDatabase::class.java,
DATABASE_NAME
)
.openHelperFactory(factory)
.build()
myDatabase.query("SELECT 1", emptyArray())
true
} catch (e: Exception) {
false
}
}
现在,如果连接被打开,我知道在myDatabase.query("SELECT 1", emptyArray())
行之后。但是,我找不到一个合适的方法来检测数据库何时关闭连接,因为我有一个通知服务,它显示数据库是否打开。
我可以在onDestroy
方法上手动关闭连接,并附加一个侦听器,但不建议这样做,因为该方法并不总是被调用。
1条答案
按热度按时间mcdcgff01#
SQLite中没有连接。这不是一个传统的数据库,它是另一个进程。它是一个库,它在当前运行的进程中直接执行文件IO。因此,没有连接,没有到另一个进程的IPC,也没有关闭或打开连接。使用DATABASE_NAME“打开”它的帮助程序只是告诉它要为该对象使用哪个DB文件