如何在SQLite Android中检测打开/关闭连接的更改?

qyyhg6bp  于 2023-06-30  发布在  SQLite
关注(0)|答案(1)|浏览(174)

是否有方法检测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方法上手动关闭连接,并附加一个侦听器,但不建议这样做,因为该方法并不总是被调用。

mcdcgff0

mcdcgff01#

SQLite中没有连接。这不是一个传统的数据库,它是另一个进程。它是一个库,它在当前运行的进程中直接执行文件IO。因此,没有连接,没有到另一个进程的IPC,也没有关闭或打开连接。使用DATABASE_NAME“打开”它的帮助程序只是告诉它要为该对象使用哪个DB文件

相关问题