是否需要处置SingleObserver?如果是,在哪里?

问题描述 投票:0回答:1

我有以下代码

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 (){private Disposable一次性; ...

android memory-leaks rx-java2 rx-android reactivex
1个回答
0
投票

您无需将一次性用品放在此处:RxAndroid `Observable...subscribe` highlighted in Android StudioonSuccess

大多数操作员都有自己的观察员。在操作员链接期间创建并连接每个观察者。之后,当您调用onError时,将在顶级DataSource运算符(例如subscribe())中创建一次性对象,并通过每个运算符的Single.just()回调将其连接到订户。然后,从DataSource开始,检查ChildObserver.onSubscribe(),然后调用Disposable.isDisposed()ChildObserver.onSuccessful()回调。

© www.soinside.com 2019 - 2024. All rights reserved.