繁体   English   中英

删除数据库后房间数据库仍然存在

[英]Room database is still alive after deleting database

我已经删除了房间数据库,但我仍然可以在我的数据库检查器中看到前面的行,除非我手动终止应用程序并重新打开它。 该方案正在注销并重新打开登录活动。 代码片段:

class MyAppCompatActivity:AppCompatActivity(){
//...
 private fun logOut() {
        MyAppDatabase.getInstance(context).clearAllTables()
        MyAppDatabase.getInstance(context).close()
        deleteDatabase(MyAppDatabase.DATABASE_NAME)
        MyFileUtil.deleteDir(cacheDir)
        MyFileUtil.deleteDir(filesDir)
     }
}
object MyFileUtil{ 
  fun deleteDir(dir: File?): Boolean {
        return if (dir != null && dir.isDirectory) {
            val children = dir.list()
            for (i in children.indices) {
                val success = deleteDir(File(dir, children[i]))
                if (!success) {
                    return false
                }
            }
            dir.delete()
        } else if (dir != null && dir.isFile) {
            dir.delete()
        } else {
            false
        }
    }
}

有谁知道如何通过以编程方式杀死应用程序来清理我的数据库并快速重新打开我的活动?

您确定要删除数据库文件吗? 这些FileUtil API 让我相信您不会删除默认情况下 Android 放置数据库的database文件夹。

您可以通过getDatabasePath()获取目录,或者更好的是,使用deleteDatabase()使用传递给 Room 构建器的相同“名称”删除它们。

另外,请务必在实际删除数据库之前调用数据库的close() ,否则会遇到麻烦。

您可以从RoomDatabase调用clearAllTables() 这样,Room 将从实体创建的表中删除所有行。

资料来源: https://developer.android.com/reference/androidx/room/RoomDatabase#clearAllTables()

这不会重置设置为自动递增的主键的计数器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM