Android 何时调用realmResults.asObservable?

Android 何时调用realmResults.asObservable?,android,realm,rx-java,Android,Realm,Rx Java,我正在实现一个聊天客户端。 每次用户单击发送消息按钮-我都会执行此消息的域插入 我有一个服务正在“等待”此更改通过套接字发送此消息。 像这样: Observable<RealmResults<RealmMessage>> observable = getUnsentMessages(); subscribeUnsendMessages = observable ... .subscribe(message

我正在实现一个聊天客户端。 每次用户单击
发送消息
按钮-我都会执行此消息的域插入

我有一个服务正在“等待”此更改通过套接字发送此消息。 像这样:

    Observable<RealmResults<RealmMessage>> observable = getUnsentMessages();

    subscribeUnsendMessages = observable
            ...
            .subscribe(message -> {
                launchMessageSending(message);
            });
上面的方法是一个跟踪缓存,用于记住我是否跟踪了给定的聊天。 (这比这要复杂一点,请耐心听我说)

这可能会导致观察者对第二次数据库更改做出反应。 因为这两个操作几乎同时发生-第二个通知仍然“有效”,因为存在未发送的消息

因此,问题是: 我说得对吗? 如果是,我应该如何处理? 我真的不想“延迟”shouldTrack()的
shouldTrack方法,因为我担心相同的问题将以不同的方式发生。
可能会为正在“处理”的消息创建一个标志,因此第二个将被忽略-但我想这有点令人讨厌。第二次“发送”不应该发生

编辑: 这是我的TrackedState对象

public class RealmATrackedState extends RealmObject {

    @PrimaryKey
    private int id = 1;

    private RealmList<RealmChat> realmChats;
    private boolean isSomething;
}
公共类realmatrackdstate扩展RealmObject{
@主键
私有int id=1;
私有RealmList realmChats;
私有布尔值是某物;
}

更新这样的对象(如上所述)是否会导致重新消息表被通知

asObservable()@EpicPandaForce您能看一下我的编辑吗?我已经将我的领域库更新为3.0,但没有任何帮助/我不太明白你的问题。
realmessage
是否与
realmatrackdstate
RealmChat
相关?因此,您想要的是
shouldTrack()
发生在
getUnsentMessages()
?@beender有很多带有chatID字段的重传消息。有很多真正的帽子。某些RealmChats引用存储在RealmTrackdState中。我想要的(想要的,因为我已经放弃了保留整个RealmObject引用的想法)是在复制引用时不要麻烦realmessages或RealmChats,因为它不会改变任何东西(从人的角度)。然而,这不是一种境界方式,显然这是不可避免的。
public boolean shouldTrack(@NonNull RealmChat chat) {

    getRealmInstance().executeTransactionAsync(realm ->{
        RealmTrackedState trackedStates = realm.where(RealmTrackedState.class).findFirst();
        trackedStates.getRealmChats().add(chat);
    });

    return true;
}
public class RealmATrackedState extends RealmObject {

    @PrimaryKey
    private int id = 1;

    private RealmList<RealmChat> realmChats;
    private boolean isSomething;
}