Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxJava门机制_Java_Android_Kotlin_Rx Java_Rx Android - Fatal编程技术网

RxJava门机制

RxJava门机制,java,android,kotlin,rx-java,rx-android,Java,Android,Kotlin,Rx Java,Rx Android,我想实现一些类似门机制的东西。 我需要一个PublishSubject和几个订户。当PublishSubject通过onNext发送数据时,只有一个订阅者将接收数据 例如: 我在选项卡中有3个等于片段。他们订阅了名为“onLoginPublisher”的全球出版物。 当onResume或onPause时,调用的门变为打开或关闭。 当调用onLogin并且由于屏幕上没有这些片段而没有打开任何门时,onNext将等待片段的onResume 查看图片:您可以对闸门的状态使用过滤器。例如,您可以将所有逻

我想实现一些类似门机制的东西。 我需要一个PublishSubject和几个订户。当PublishSubject通过onNext发送数据时,只有一个订阅者将接收数据

例如: 我在选项卡中有3个等于片段。他们订阅了名为“onLoginPublisher”的全球出版物。 当onResumeonPause时,调用的门变为打开或关闭。 当调用onLogin并且由于屏幕上没有这些片段而没有打开任何门时,onNext将等待片段的onResume


查看图片:

您可以对闸门的状态使用
过滤器。例如,您可以将所有逻辑包装到一个类中:

公共最终类GatedSubject{
最终PublishSubject=PublishSubject.create();
最终原子参考阵列门;
公共网关子对象(整数){
门=新原子参考阵列(numGates);
}
公共布尔getGateStatus(int gateIndex){
返回门。get(gateIndex)!=null;
}
公共无效setGateStatus(int gateIndex,布尔状态){
gates.set(gateIndex,status?Boolean.TRUE:null);
}
公共无效可观测getGate(int gateIndex){
返回subject.filter(v->getGateStatus(gateIndex));
}
下一页(T项)的公共空白{
主题.onNext(项目);
}
公共无效onError(可丢弃错误){
主语。一个错误(错误);
}
未完成的公共空间(){
subject.onComplete();
}
}

如果每个闸门都关闭,下一个数据将丢失。您需要一种暂停流的方法,该方法目前仅适用于
可流动的
s via。感谢valve()和您的代码,这就是我需要的。