【发布时间】:2021-06-10 03:40:58
【问题描述】:
我正在尝试实现 RxJava 事件总线,我的用例是在订阅和发送事件时触发。但是使用我的代码,即使我发送一次事件,我也会收到多个事件。它第一次运行良好,从我第二次登录我的应用程序开始就表现得很奇怪。 IE;第一次期望的代码实现一次,第二次实现两次,依此类推。
public class RxBus {
public RxBus() {
}
private PublishSubject<String> bus = PublishSubject.create();
public void send(String str) {
bus.onNext(str);
}
public Observable<String> toObservable() {
return bus;
}
}
订阅 RxBus 的代码如下:
public void sendEvents(){
rxBus.send("Trigger event");
}
public void startListener(){
rxBus.toObservable().subscribe(str -> {
//do action//This is executing multiple lines
});
}
在上面的代码中,即使当 sendEvents() 被执行一次时,包含“do action”的行也被执行了多次。那么,我在这里做错了什么。当我浏览一些博客时,他们要求在我们第二次访问该屏幕时取消订阅。但是我该如何退订呢?
非常感谢您的帮助!
【问题讨论】:
-
你必须记住
Disposable你的subscribe返回并在startListener的上下文退出时处理它(例如,在onDestroy中)。
标签: android observable rx-java event-bus publishsubject