我想在用户按下注销按钮时清除整个数据库,并在另一个用户登录时加载新数据。我尝试了很多解决方案,例如
try {
Realm.deleteRealm(realmConfiguration);
} catch (Exception ex){
throw ex;
}
还有
try {
Realm.deleteRealmFile(getActivity());
//Realm file has been deleted.
} catch (Exception ex){
ex.printStackTrace();
//No Realm file to remove.
}
但是这两个代码都不起作用。 预先感谢。
Realm.deleteRealm()
时,你必须确保所有Realm实例都已关闭,否则会抛出异常而不会删除任何内容。通过调用此方法,所有 Realm 文件都将被删除,这意味着所有对象和模式都消失了。对于任何一般情况来说,捕获所有异常都是不好的做法。
Realm.delelteAll()
。这不需要关闭所有 Realm 实例。它只会删除 Realm 中的所有对象,而不会清除架构。再说一遍,不要捕获所有异常。
如果您确定没有任何其他数据库要保存,您也可以删除所有其他数据。你可以关注这个答案 以编程方式清除应用程序的数据
如果您使用
deleteRealmIfMigrationNeeded
,您只需更新您的领域模式版本即可
override fun onCreate() {
super.onCreate()
//add support for vector drawables on older APIs
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
//init realm
Realm.init(this)
mApp = this
//init set realm configs
val realmConfiguration = RealmConfiguration.Builder()
.schemaVersion(2) //if you used 1 before
.allowQueriesOnUiThread(true)
.allowWritesOnUiThread(true)
.deleteRealmIfMigrationNeeded()// if migration needed then this methoud will remove the existing database and will create new database
.build()
Realm.setDefaultConfiguration(realmConfiguration)