2016-08-29 232 views
41

RxJava2'de CompositeDisposable veya Disposable kullanımı ile ilgili örnekler. RxJava 1'de, CompositeSubscription vardı, ancak RxJava2'de mevcut değil, rxJava2'de CompositeDisposable bir şey var. RxJava2 içinde CompositeDisposable veya Tek kullanımlık nasıl kullanılır.RxJava 2'nin CompositeDisposable'ı nasıl kullanılır?

cevap

74
private final CompositeDisposable disposables = new CompositeDisposable(); 


// adding an Observable to the disposable 
disposables.add(sampleObservable() 
       .subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribeWith(new DisposableObserver<String>() { 
        @Override 
        public void onComplete() { 
        } 

        @Override 
        public void onError(Throwable e) { 
        } 

        @Override 
        public void onNext(String value) { 
        } 
       })); 

    static Observable<String> sampleObservable() { 
     return Observable.defer(new Callable<ObservableSource<? extends String>>() { 
      @Override 
      public ObservableSource<? extends String> call() throws Exception { 
       // Do some long running operation 
       SystemClock.sleep(2000); 
       return Observable.just("one", "two", "three", "four", "five"); 
      } 
     }); 
    }     


// Using clear will clear all, but can accept new disposable 
disposables.clear(); 
// Using dispose will clear all and set isDisposed = true, so it will not accept any new disposable 
disposables.dispose(); 

RxJava2 kullanımını göstermek için örnek bir proje oluşturdum. Onlar abonelik kaldırıldı Neden Burada sample project - RxJava2-Android-Samples

+5

bulabilirim? –

+2

@anandgaurav: Onlar rxJava2'yi sıfırdan yazdılar, böylece daha iyi apiler yarattılar. –

+0

de degerli kullanicidan degerli kullanilabilir –

0
// clearing or unsubscibing 
    disposables.clear(); 

burası kullanımını dispose()

+9

Bu, iyi bir öneri değildir, çünkü imha edildikten sonra gözlemlenebilir birisine yeniden gönderemezsiniz(). – box