gpt4 book ai didi

android - Realm DB Realm.asObservable() 发出两次结果

转载 作者:太空狗 更新时间:2023-10-29 16:32:33 26 4
gpt4 key购买 nike

我的应用程序使用 RxJava 和 Realm DB。当我查询 Realm 中的数据并调用 Realm.asObservable() 时,RealmResult 发出 2 次。

public class JustTest extends Activity {
private static final String TAG = "TEST";
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
realm = Realm.getDefaultInstance();
realm.where(Group.class).findAllAsync().asObservable()
.subscribe(new Action1<RealmResults<Group>>() {
@Override
public void call(RealmResults<Group> groups) {
XLog.d(TAG, "Realm launch group result, size " + groups.size());
}
});
}

@Override
protected void onDestroy() {
super.onDestroy();
realm.close();
}
}

日志:

TEST: Realm emits group result, size 0
TEST: Realm emits group result, size 1

最佳答案

这是设计使然,因为如果您订阅了 Realm,它会立即发出一个占位符对象。如果您只对第一个“真实”结果感兴趣,您可以这样做:

realm.where(Foo.class).findAllAsync().asObservable()
.filter(obj::isLoaded) // isLoaded is true when query is completed
.first() // Only get the first result and then complete
.subscribe(...)

目前的文档并不能立即清楚这一点,但我们正在更新 JavaDoc 以更好地解释这一点:https://github.com/realm/realm-java/pull/2201

关于android - Realm DB Realm.asObservable() 发出两次结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127841/

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