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);
}
});
出于仪器测试目的,我想知道何时订阅可观察对象以及何时完成,以便在完成所有工作线程后,可以进行自动化的 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);
}
});