因此,在关闭数据库之前,我要将数据库文件导出到外部存储中,并且在导出数据库之后,我想继续使用此关闭的数据库,如何在不重新启动应用程序的情况下重新打开同一数据库?如果我重新启动应用程序,则一切正常,但是如果我重新启动调用MainActivity
方法的getInstance()
并尝试从数据库应用程序中删除某些内容时崩溃并产生此异常:
android.database.sqlite.SQLiteException: no such table: room_table_modification_log (code 1): , while compiling: DELETE FROM Note WHERE entryid = ?
使用destroyInstance()
方法关闭数据库:
companion object {
private var INSTANCE: MyDatabase? = null
var lock = Any()
fun getInstance(context: Context): MyDatabase{
synchronized(lock){
if (INSTANCE == null){
INSTANCE = Room.databaseBuilder(context.applicationContext, MyDatabase::class.java,"MyDB.db").build()
}
return INSTANCE!!
}
}
fun destroyInstance() {
if (INSTANCE?.isOpen == true){
INSTANCE?.close()
}
INSTANCE = null
}
}