RxJava를 처음 사용하고 RxJava를 이벤트 버스로 사용하려고합니다. Kaushik Gopal (https://github.com/kaushikgopal/RxJava-Android-Samples/blob/master/app/src/main/java/com/morihacky/android/rxjava/rxbus/RxBus.java)의 RxJava 예제를 사용하고 있습니다.Rxjava 이벤트 버스가 다시 시작될 때 다시 구독하지 않습니다.
여기 내 RxBus 코드
public class RxBus {
private static RxBus _instance;
private final Subject<Object, Object> _bus;
public static synchronized RxBus getInstance(){
if(_instance == null){
_instance = new RxBus();
}
return _instance;
}
private RxBus() {
_bus = new SerializedSubject<>(PublishSubject.create());
}
public void send(Object o) {
_bus.onNext(o);
}
public Observable<Object> toObserverable() {
return _bus;
}
public boolean hasObservers() {
return _bus.hasObservers();
}
}
내가 다른 스레드에 게시거야하지만 난 UI 스레드에 가입 해요입니다. 여기 내 구독 코드
public abstract class BaseActivity extends AppCompatActivity {
protected CompositeSubscription _subscriptions;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
_subscriptions = new CompositeSubscription();
...
}
@Override
protected void onResume() {
....
_subscriptions.add(RxBus.getInstance().toObserverable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Object>() {
@Override
public void call(final Object event) {
//Do something here
}
}));
.....
}
@Override
protected void onPause() {
......
_subscriptions.unsubscribe();
}
}
처음 활동을로드 할 때 이벤트가 수신됩니다. 그러나 활동을 닫고 다시 열면 (onPause 및 onResume 트리거) 이벤트가 중지됩니다. 내가 여기서 아무것도 놓치고 있니? RxJava를 이벤트 버스로 사용하는 올바른 방법입니까? 다시 다른 스레드에 게시하지만 UI 스레드에 가입하고 있습니다. 감사합니다