趣约 v1.0.0版本的 MD5 值为:39b38c4fdd4abffa44fa3a81ea9918d4
以下内容为反编译后的 FlowableLife.java 源代码,内容仅作参考
package com.rxjava.rxlife;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Flowable;
import io.reactivex.rxjava3.core.FlowableSubscriber;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.exceptions.Exceptions;
import io.reactivex.rxjava3.functions.Action;
import io.reactivex.rxjava3.functions.Consumer;
import io.reactivex.rxjava3.internal.functions.Functions;
import io.reactivex.rxjava3.internal.operators.flowable.FlowableInternalHelper;
import io.reactivex.rxjava3.internal.subscribers.LambdaSubscriber;
import io.reactivex.rxjava3.plugins.RxJavaPlugins;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
public class FlowableLife<T> extends RxSource<FlowableSubscriber<? super T>> {
private final Flowable<T> upStream;
@Override
public void subscribe(Object obj) {
subscribe((FlowableSubscriber) ((FlowableSubscriber) obj));
}
@Override
public Object subscribeWith(Object obj) {
return super.subscribeWith(obj);
}
public FlowableLife(Flowable<T> flowable, Scope scope, boolean z) {
super(scope, z);
this.upStream = flowable;
}
@Override
public final Disposable subscribe() {
return subscribe(Functions.emptyConsumer(), Functions.ON_ERROR_MISSING, Functions.EMPTY_ACTION, FlowableInternalHelper.RequestMax.INSTANCE);
}
public final Disposable subscribe(Consumer<? super T> consumer) {
return subscribe(consumer, Functions.ON_ERROR_MISSING, Functions.EMPTY_ACTION, FlowableInternalHelper.RequestMax.INSTANCE);
}
public final Disposable subscribe(Consumer<? super T> consumer, Consumer<? super Throwable> consumer2) {
return subscribe(consumer, consumer2, Functions.EMPTY_ACTION, FlowableInternalHelper.RequestMax.INSTANCE);
}
public final Disposable subscribe(Consumer<? super T> consumer, Consumer<? super Throwable> consumer2, Action action) {
return subscribe(consumer, consumer2, action, FlowableInternalHelper.RequestMax.INSTANCE);
}
public final Disposable subscribe(Consumer<? super T> consumer, Consumer<? super Throwable> consumer2, Action action, Consumer<? super Subscription> consumer3) {
ObjectHelper.requireNonNull(consumer, "onNext is null");
ObjectHelper.requireNonNull(consumer2, "onError is null");
ObjectHelper.requireNonNull(action, "onComplete is null");
ObjectHelper.requireNonNull(consumer3, "onSubscribe is null");
LambdaSubscriber lambdaSubscriber = new LambdaSubscriber(consumer, consumer2, action, consumer3);
subscribe((FlowableSubscriber) lambdaSubscriber);
return lambdaSubscriber;
}
public final void subscribe(FlowableSubscriber<? super T> flowableSubscriber) {
ObjectHelper.requireNonNull(flowableSubscriber, "s is null");
try {
Subscriber<? super T> onSubscribe = RxJavaPlugins.onSubscribe(this.upStream, flowableSubscriber);
ObjectHelper.requireNonNull(onSubscribe, "The RxJavaPlugins.onSubscribe hook returned a null FlowableSubscriber. Please check the handler provided to RxJavaPlugins.setOnFlowableSubscribe for invalid null returns. Further reading: https://github.com/ReactiveX/RxJava/wiki/Plugins");
subscribeActual(onSubscribe);
} catch (NullPointerException e) {
throw e;
} catch (Throwable th) {
Exceptions.throwIfFatal(th);
RxJavaPlugins.onError(th);
NullPointerException nullPointerException = new NullPointerException("Actually not, but can't throw other exceptions due to RS");
nullPointerException.initCause(th);
throw nullPointerException;
}
}
private void subscribeActual(Subscriber<? super T> subscriber) {
Flowable<T> flowable = this.upStream;
if (this.onMain) {
flowable = flowable.observeOn(AndroidSchedulers.mainThread());
}
flowable.onTerminateDetach().subscribe(new LifeSubscriber(subscriber, this.scope));
}
}