【发布时间】:2017-12-31 17:58:08
【问题描述】:
我在 onActivityCreated 的片段中有 CompositeSubscription。在我更改 EditText 中的字符串后,我在 mViewModel 中的代码会发出 Observable。
mSubscription = new CompositeSubscription();
mSubscription.add(mViewModel.getMyObservableIdModelCompany()
.observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
.doOnError(throwable -> { Log.e(TAG, "Error NewCashDocFragment " + throwable.getMessage());
hideProgressBar();
Toast.makeText(getActivity(), "Server not connected", Toast.LENGTH_SHORT).show();
})
.onErrorResumeNext(throwable -> empty())
.subscribe(this::setIdCompanyKt));
我的 mViewModel 中的方法
public Observable<List<IdCompanyKt>> getMyObservableIdModelCompany() {
return mObservableIdModelCompany
.observeOn(mSchedulerProvider.computation())
.flatMap(queryx -> mDataModel.getObservableIdModelCompany());
}
如果我启动 Activityfragment,代码可以正常工作并且我订阅了 Observable。如果我启动 startActivityForResult 下一个 Activity 并返回到 Activityfragment 我无法订阅 Observable。
返回后我的 Observable 似乎在另一个线程上。
为什么下一个Activity返回后不能订阅Observable?
【问题讨论】:
-
再贴一些代码,第一个sn-p是从哪里调用的?以及如何清除 CompositeSubscription
-
@elmorabea first sn-p 在片段的 onActivityCreated 方法中被调用。似乎返回后我的 Observable 在其他线程上。
-
在
onDestroy中调用clear(),而不是unsubscribe/dispose。
标签: android rx-java2 rx-android