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