RxJavaPlugins 不工作?

RxJavaPlugins not working?

出于仪器测试目的,我想知道何时订阅可观察对象以及何时完成,以便在完成所有工作线程后,可以进行自动化的 ui 操作和断言。

给定以下 RxJava2 代码:

RxJavaPlugins.setOnSingleSubscribe((observable, observer) -> {
            observable.doFinally(() -> Timber.d("single finish"))
                    .doOnSubscribe(__ -> Timber.d("single subscribe2"))
                    .doOnSuccess(__ -> Timber.d("single success"))
                    .doOnEvent((__, ___) -> Timber.d("single event"))
                    .doOnError(__ -> Timber.e("single error"));
            Timber.d("single subscription");
            return observer;
        });

它只记录 single subscription 但不会记录任何其他消息。

它应该如何工作?

我在 RxJava1 中使用的代码是:

RxJavaHooks.setOnSingleStart { _, onSubscribe ->
      Timber.d("single subscription")
      return onSubscribe
}

RxJavaHooks.setOnSingleReturn { subscription ->
      Timber.d("single finish")
      return subscription
}

我找到了解决方案:

        RxJavaPlugins.setOnSingleSubscribe((observable, observer) -> new SingleObserver() {
            @Override
            public void onSubscribe(Disposable d) {
                Timber.d("single subscription");
                observer.onSubscribe(d);
            }

            @Override
            public void onSuccess(Object o) {
                Timber.d("single success");
                observer.onSuccess(o);
            }

            @Override
            public void onError(Throwable e) {
                Timber.d("single error");
                observer.onError(e);
            }
        });