我有以下代码
Single.just(settings.toString())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<String>() {
private Disposable disposable;
@Override public void onSubscribe(Disposable d) {
this.disposable = d;
}
@Override public void onSuccess(String s) {
webViewFragment.onInjectMessage(s, null);
this.disposable.dispose();
}
@Override public void onError(Throwable e) {
this.disposable.dispose();
}
});
我在后台线程中,需要将字符串注入WebView,这只能在主线程上完成,这就是为什么我要调用.observeOn(AndroidSchedulers.mainThread()
但是当我阅读SingleObserver
on GitHub的示例代码时,看到以下内容:
SingleObserver
他们没有处置return new SingleObserver<String>() {
@Override public void onSubscribe(Disposable d) {
Log.d(TAG, " onSubscribe : " + d.isDisposed());
}
@Override public void onSuccess(String value) {
textView.append(" onNext : value : " + value);
textView.append(AppConstant.LINE_SEPARATOR);
Log.d(TAG, " onNext value : " + value);
}
@Override public void onError(Throwable e) {
textView.append(" onError : " + e.getMessage());
textView.append(AppConstant.LINE_SEPARATOR);
Log.d(TAG, " onError : " + e.getMessage());
}
};
。
我是否需要在SingleObserver
和/或this.disposable.dispose();
中调用onSuccess
(都是?还是仅在onError
中?),或者像GitHub示例中所示,该类将自行处理?] >
我是在内存泄漏的情况下问这个的。
此问题起源于onSuccess
我有以下一段代码Single.just(settings.toString()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver
您无需将一次性用品放在此处:RxAndroid `Observable...subscribe` highlighted in Android Studio,onSuccess
。
大多数操作员都有自己的观察员。在操作员链接期间创建并连接每个观察者。之后,当您调用onError
时,将在顶级DataSource运算符(例如subscribe()
)中创建一次性对象,并通过每个运算符的Single.just()
回调将其连接到订户。然后,从DataSource开始,检查ChildObserver.onSubscribe()
,然后调用Disposable.isDisposed()
或ChildObserver.onSuccessful()
回调。