Переключение подписки RxJava с кнопкой - PullRequest
0 голосов
/ 31 мая 2019

Я пытался переключить подписку на 2 Observables, которые я merge(), используя одну кнопку в Android и boolean mSubsciptionToggle. Переключатель устанавливается на false при первом создании фрагмента.

Я создаю Observables сам, используя Observable.create(), который выглядит примерно так:

    Observable<String> observable = Observable.create(observer -> {

        final BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // Log incoming broadcasts
            }
        };

        getActivity().registerReceiver(receiver, filter);

        if (mSubscriptionToggle) {
            observer.onComplete();
        }
    });

Затем я добавляю OnClickListener к моей кнопке так:

    mStickyButton.setOnClickListener( (View view) -> {

                // Observables were created from the first code snippet
                Observable.merge(mBatteryObservable, mAirplaneModeObservable)
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribeOn(AndroidSchedulers.mainThread())
                        .subscribe(// Logging each emitted String);

                // Toggling the subscription each time the button is clicked
                mSubscriptionToggle = !mSubscriptionToggle;
            }
    );

Моя проблема в том, что при первом нажатии кнопки немедленно происходит onComplete(). Однако я позвонил subscribe() до того, как это произойдет:

mSubscriptionToggle = !mSubscriptionToggle

Почему мой логический параметр меняется после того, как я позвонил subscribe()?

...