我正在尝试删除Realm文件以在用户注销时清除缓存。
以下是我的尝试:
Realm realm = Realm.getInstance(activity);
realm.close();
RealmConfiguration config = realm.getConfiguration();
Realm.deleteRealm(config);
我得到了这个例外:
11-05 23:56:00.902 27521-27521/com.my.app E/AndroidRuntime: 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.
11-05 23:56:00.902 27521-27521/com.my.app E/AndroidRuntime: at io.realm.Realm.deleteRealm(Realm.java:1726)
我显然已经关闭了一些东西,但它的说法更开放了吗?如何关闭所有领域,这样我就可以把所有东西都吹走,重新开始?
答案 0 :(得分:3)
Realm实现Closeable以处理本机内存 解除分配和文件描述符因此记住这一点非常重要 完成后关闭你的Realm实例。
Realm实例是引用计数,这意味着如果你打电话 getIstance()在一个线程中两次,你还必须调用close() 两次。
可能您缺少在您创建的每个Realm实例上调用close()
。
检查您的代码,找出getInstance()
未与close()
匹配的位置。