【发布时间】:2018-06-13 18:32:14
【问题描述】:
我正在尝试用 RxAndroid 替换 EventBus。
我希望可分页片段订阅/取消订阅事件源,这些片段的创建和丢弃速度相对较快,具体取决于用户滑动到新页面的速度。
在 EventBus 中,我能够添加一个修饰的回调方法(即@Subscribe(threadMode = ThreadMode.MAIN))并在片段的 onStart/onStop 方法中注册/取消注册。
使用 RxJava2,我现在在一个类中创建一个 PublishSubject 对象
public static PublishSubject<List<Long>> m_psUpdatedDays = PublishSubject.create();
public static void publishUpdatedDays(List<Long> lDay) {
m_psUpdatedDays.onNext(lDay);
}
并通过在 Fragment 的 onStart 方法中调用以下内容在另一个类中订阅此发布者:
m_psUpdatedDays.observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<List<Long>>() {
@Override public void onSubscribe(Disposable d) {}
@Override public void onNext(List<Long> longs) {
...
Update Fragment UI here
...
}
@Override public void onError(Throwable e) {}
@Override public void onComplete() {}
});
我的问题是,当 Fragment 的 onStop 方法被系统调用时,如何取消订阅这个新的 Observer?
我是否需要存储我在onSubscribe 中获得的Disposable 对象,然后在onStop 方法中对其调用.dispose()?
【问题讨论】:
-
这个问题现在已经为我解决了。除了 Sarath Kn 的回答,这可能是一个有用的视频caster.io/lessons/rxjava-2-compositedisposable
标签: rx-java2 publish-subscribe rx-android event-bus