【问题标题】:How to dispose Disposable in RxJava 2.0 on Android?如何在 Android 上的 RxJava 2.0 中处理 Disposable?
【发布时间】:2017-05-02 11:35:25
【问题描述】:

mSafeObserver.isDisposed();下面的代码中,如果isDatabaseEmpty == falsezipped.subscribe(mSafeObserver);未被调用)总是返回空指针异常。

private SafeObserver<ResponseHelper> mSafeObserver; 

private Observer<ResponseHelper> observer = new Observer<ResponseHelper>() {
    // ...
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mSafeObserver = new SafeObserver<>(observer);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // ...        
    if (isDatabaseEmpty) {
        zipped.subscribe(mSafeObserver);
    } else {
        initRecycler();
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    if (mSafeObserver != null && !mSafeObserver.isDisposed()) 
        mSafeObserver.dispose();
}

在 rxJava 1.0 中这段代码是正确的:

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mSubscription != null && !mSubscription.isUnsubscribed()) 
        mSubscription.unsubscribe();
}

如何检查我是否可以处置 Disposable?

【问题讨论】:

    标签: android disposable


    【解决方案1】:

    我不知道 zipped 指的是什么,但我会这样做

    private CompositeDisposable mDisposable = new CompositeDisposable();
    private Observer<ResponseHelper> observer = 
    new Observer<ResponseHelper>() {
        // ...
    }
    
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mSafeObserver = new SafeObserver<>(observer);
    }
    
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        // ...        
        if (isDatabaseEmpty) {
            zipped
                .doOnSubscribe(mDisposable::add)
                .subscribe(mSafeObserver);
        } else {
            initRecycler();
        }
    }
    
    @Override
    public void onDestroy() {
        super.onDestroy();
        mDisposable.dispose();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多