异步获取RealmObject属性

时间:2017-11-04 20:14:38

标签: android realm

我有一个RealmObject对话,其中包含一个RealmList消息(我的消息不知道对话)。我想以异步方式查询和排序它们 这是我糟糕的尝试,但我发布它是为了让你更好地了解我想做的事情:

return realm.where(Conversation.class)
            .equalTo("id",conversationId)
            .findFirstAsync()
            .getMessages().sort("receivedDate", Sort.DESCENDING)
            .asFlowable();

它没有工作,抛出了这个异常:

  

java.lang.IllegalStateException:挂起的查询尚未执行

目前我不知道如何异步查询它们并在UI线程中取回它们而不更改我的架构。

修改
我的架构非常简单:

public class Message extends RealmObject{
private String content;
private Date receivedDate;
}

public class Conversation extends RealmObject{
    private String id;
    private RealmList<Message> messages;
}

2 个答案:

答案 0 :(得分:1)

没有看到你的架构所以我不知道链接对象是否可行,我想我会尝试以下

{'I': 2, 'b': 2, 't': 3, 'f': 1}

如果可以删除该对象,那么您可能希望切换到findAll *或同时检查isValid。

答案 1 :(得分:0)

您可以使用LiveDataReactiveStreams

LiveDataReactiveStreams.fromPublisher(realm.where(Conversation.class)
        .equalTo("id",conversationId)
        .findFirstAsync()
        .filter(RealmResults::isLoaded)
        .getMessages().sort("receivedDate", Sort.DESCENDING)
        .asFlowable()))
            .getValue();