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から流れてくるデータを受け止めるパイプを繋ぐイメージです。


