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;
}