モケラ

Tech Sheets

mokelab

RxJavaのSubscribeとは

最終更新日:2017-02-26

Observableはデータを出力する箱でしたが、Observableを作っただけでは処理は開始されません。処理を開始するにはSubscribeという手続きが必要です。

例で見てみましょう。getUser()Userオブジェクトを出力するObservableを返します。実際に処理を開始するためにsubscribe()を呼んでいます。

// load from observable
UserRepository repo = new UserRepository();

int userId = 1234;
repo.getUser(userId).subscribe(new Observer<User>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    public void onNext(User user) {
        Toast.makeText(getActivity(), user.getName(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {

    }
});

subscribe()には、流れてきたデータをどう扱うかなどを担当するObserverを渡します。データを出力するObservableと名前が似てるので混同しないようにしましょう。

図にすると次のような感じになります。Observableから流れてくるデータを受け止めるパイプを繋ぐイメージです。

一覧に戻る