2016-08-29 29 views

Trả lời

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

Tôi có một dự án mẫu để minh họa việc sử dụng RxJava2. Ở đây bạn có thể tìm thấy sample project - RxJava2-Android-Samples

+5

Tại sao họ loại bỏ thuê bao? –

+2

@anandgaurav: Họ đã viết rxJava2 từ đầu để họ tạo ra apis tốt hơn. –

+0

bạn cũng có thể sử dụng từCallable thay vì trì hoãn –

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

nơi này sử dụng dispose()

+9

Đây không phải là một lời khuyên tốt, vì bạn không thể đăng ký lại với một quan sát sau khi vứt bỏ(). – box

Các vấn đề liên quan