簡體   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