我有PublishSubject
,一旦从服务收到新消息就会发出新项目(它运行后台线程,打开套接字连接并从服务器发送/接收消息,一旦收到消息,发送带有收到消息的localbroadcast) 。
当UI需要调用服务器并从响应中获取一些数据时,我会过滤传入消息流,只接收一条预期消息(每条消息都有唯一的ID,因此很容易)。所以这是我的简化代码:
public Observable<ResponseType> getStuff() {
Request request = new Request()
messageSender.send(request);
AsyncSubject<ResponseType> subject = AsyncSubject.create()
inStream.filter(response -> response.hasId())
.filter(response -> response.getId() == request.getId());
.subscribe(response -> {
subject.onNext(response);
subject.onComplete();
}, error -> { subject.onError(error) });
}
所以...因为我无法理解某些事情。
我应该使用什么Rx类来通知UI有关响应?我听说过Single&lt;&gt;,但我不知道如何在我的代码中插入它。
我应该学习哪种更好的流过滤机制?
答案 0 :(得分:0)
找到两个解决方案:
Observable#first()
Observable#toSingle()
解决。