安卓Realm默认数据库清除

6
如何在安卓中清除默认领域数据库?我尝试了以下代码,但无法解决deleteRealmFile方法。
方法1:
try {
   Realm.deleteRealmFile(context);
  //Realm file has been deleted.

} catch (Exception ex){
   ex.printStackTrace();
  //No Realm file to remove.
}

我尝试使用配置文件进行删除。

方法2:

try {
     Realm.deleteRealm(realm.getConfiguration());
     //Realm file has been deleted.
} catch (Exception ex){
     ex.printStackTrace();
     //No Realm file to remove.
}

但是它会报错:
java.lang.IllegalStateException: It's not allowed to delete the file associated with an open Realm. Remember to close() all the instances of the Realm before deleting its file.
2个回答

6
Realm.deleteRealm(realm.getConfiguration()); 之前,只需添加以下代码 realm.close() 即可使其完美运行。
try {
      realm.close()
      Realm.deleteRealm(realm.getConfiguration());
                //Realm file has been deleted.
} catch (Exception ex){
                ex.printStackTrace();
                //No Realm file to remove.
}

2
这个不起作用,抛出java.lang.IllegalStateException:不允许删除与打开的Realm相关联的文件。在删除其文件之前,请记得关闭()Realm的所有实例。 - shekar

2
如所述的异常,您必须关闭所有引用特定 Realm 文件的 Realm 实例。
这意味着,如果您已经调用了
``` Realm realm = Realm.getInstance(config); ```
在删除之前必须关闭 Realm。

realm.close();

而 Realm 实例是基于引用计数的,请确保每个 getInstance 都有一个匹配的 close

这非常重要,否则可能会发生内存泄漏。 请参见 https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances 以获取一些示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接