我在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?
答案 0 :(得分:0)
我已将创建和订阅Observable从方法onActivityCreated移动到方法onResume并取消订阅Observable到方法onPause。 Observable是每次从下一次活动返回时重新初始化的。
@Override
public void onResume() {
super.onResume();
bind();
mSubscription = new CompositeSubscription();
mSubscription.add(mViewModel.getMyObservableIdModelCompany()
.subscribeOn(Schedulers.computation())
.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));
}