gpt4 book ai didi

java - 您如何检查 Realm 实例是否已经关闭?

转载 作者:太空狗 更新时间:2023-10-29 22:57:22 25 4
gpt4 key购买 nike

我正在使用 Realm for Android 来存储一些数据。当用户按下注销按钮时,我想清除我的整个 Realm 数据库。为此,我有以下代码 fragment :

realm.close();
realm.deleteRealmFile(this);
goToLoginActivity();

现在的问题出在我的 onResume 函数中。我收到以下异常:

原因:java.lang.IllegalStateException:此 Realm 实例已关闭,使其无法使用。

我的onResume代码如下:

@Override
protected void onResume() {
super.onResume();

// I'm trying to check if the realm is closed; this does not work
if (realm == null) {
realm = Realm.getInstance(this);
}

// Do query using realm
}

如何检查 Realm 对象是否已经关闭?或者,是否有比删除 Realm 文件更好的清除数据库的方法?

--

编辑:刚看到How can I easily delete all objects in a Realm适用于 iOS。关于 deleteAllObjects API 何时可用于 Android 的任何消息?在撰写本文时,Android 的版本为 0.80.0,而 iOS 的 API 为 0.87.0。

最佳答案

RealmObjects 有一个 isValid() 方法,如果对象已从数据库中删除或 Realm 已关闭,该方法将返回 false,例如。

Realm realm = Realm.getInstance(getContext());
Foo foo = realm.allObjects(Foo.class).findFirst();
if (foo.isValid()) {
// Do something with Foo
} else {
// Any operation will throw a IllegalStateException
}

全部删除

android API 有一个Realm.clear(Class clazz) 方法做同样的事情。 http://realm.io/docs/java/api/io/realm/Realm.html#clear-java.lang.Class-这是为了模仿其余的 Collection API,但我可以看到关于 iOS API 的混淆。

关于java - 您如何检查 Realm 实例是否已经关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com