首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Realm DB Realm.asObservable()发出两次结果

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

Stack Overflow用户
提问于 2016-02-01 18:12:10
回答 1查看 916关注 0票数 2

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

代码语言:javascript
复制
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();
    }
}

日志:

代码语言:javascript
复制
TEST: Realm emits group result, size 0
TEST: Realm emits group result, size 1
EN

回答 1

Stack Overflow用户

发布于 2016-02-01 19:08:31

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

代码语言:javascript
复制
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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35127841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档