2016-08-29 6 views
41

Beispiele zur Verwendung von CompositeDisposable oder Disposable in RxJava2. In RxJava 1 gab es CompositeSubscription, aber das ist nicht in RxJava2 vorhanden. Es gibt etwas CompositeDisposable in rxJava2. Verwendung von CompositeDisposable oder Disposable in RxJava2Wie verwende ich CompositeDisposable von RxJava 2?

Antwort

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(); 

Ich habe ein Beispielprojekt erstellen, um die Verwendung von RxJava2 zu demonstrieren. Hier finden Sie die sample project - RxJava2-Android-Samples

+5

Warum sie Abonnement entfernt? –

+2

@anandgaurav: Sie haben rxJava2 von Grund auf neu geschrieben, damit sie bessere Apis erstellt haben. –

+0

Sie können auch fromCallable anstelle von verschieben –

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

dieser Ort Nutzung dispose()

+9

Dies ist kein guter Rat, da Sie nach dem dispose() keine Observable erneut abonnieren können. – box