LoginSignup
4
2

More than 5 years have passed since last update.

[android] rxJava1 → rxJava2 変更する 〜unsubscribe から disposeへ〜

Last updated at Posted at 2017-06-15

rxJava1の場合

RxJavaActivity.java
public class RxJavaActivity extends Activity {

    private Subscription subscription;

    public void onDestroy() {
        if(subscription != null){
           subscription.unsubscribe();
        }

        super.onDestroy();
    }

    private void loadData() {
        subscription = Observable.create(new Observable.OnSubscribe<Data>() {
            @Override
            public void call(Subscriber<Data> subscriber) {
                Data data = null;
                try {
                   data = getData();
                } catch (Exception e) {
                   subscriber.onError(e);
                }
                observableEmitter.onNext(data);
                observableEmitter.onCompleted();

            }
        }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscribe<Data>() {
                    @Override
                    public void onCompleted() {
                        //処理
                    }

                    @Override
                    public void onError(Throwable e) {
                                                //処理
                    }

                    @Override
                    public void onNext(PixivResponse pixivResponse) {
                                                //処理
                    }
                });
   }
}

rxJava2の場合

RxJava2Activity.java

public class RxJava2Activity extends Activity {

    private DisposableSingleObserver<Document> loadDataDisposable;

    public void onDestroy() {
        if(loadDataDisposable != null){
           loadDataDisposable.dispose();
        }

        super.onDestroy();
    }

    private void loadData() {
        loadDataDisposable = Observable.create(new ObservableOnSubscribe<Data>() {
            @Override
            public void subscribe(ObservableEmitter<Object> observableEmitter) throws Exception {
                Data data = null;
                try {
                   data = getData();
                } catch (Exception e) {
                    if (!observableEmitter.isDisposed()) {
                        observableEmitter.onError(e);
                    }
                }

                if (!observableEmitter.isDisposed()) {
                    observableEmitter.onNext(data);
                    observableEmitter.onComplete();
                }
            }
        })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(new DisposableObserver<Data>() { //subscribeWithになる
                     @Override
                     public void onNext(Document document) {
                        //処理
                     }

                    @Override
                    public void onError(Throwable throwable) {
                                                //処理
                    }

                    @Override
                    public void onComplete() {                                  //onCompleteになる
                                                //処理
                    }
                });
   }
}

以下は、ゲームの宣伝ですm(_ _)m

○落ちてくる物すべてタップ




4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2