Я пытался переключить подписку на 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()
?