从下一个活动返回后,不会订阅Observable

问题描述 投票:0回答:1

我在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());
}

链接到完整的片段代码https://github.com/eurosecom/samfantozzi/blob/masterAS3/app/src/main/java/com/eusecom/samfantozzi/NewCashDocFragment.java

如果我启动Activityfragment,代码工作正常,我订阅Observable。如果我启动startActivityForResult下一个Activity并返回Activityfragment,我就无法订阅Observable。

似乎在返回后我的Observable在另一个线程上。

为什么我不能在从下一个Activity返回后订阅Observable?

android rx-java2 rx-android
1个回答
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));
}
© www.soinside.com 2019 - 2024. All rights reserved.