22時に寝ようと思って2時に寝る。

備忘録や日記を書いてます。きょうは早く寝よう。

RxJava - Cold および Hot な生産者(Flowable / Observable)

今回は、生産者(Publisher)は大きく分けて Cold と Hot の2つに分類することができます。それら2つについて説明してきます。

Cold な生産者

f:id:azuuun:20180818180031p:plain

  • Cold な生産者は 1つの消費者とのみ購読関係を結ぶ
  • 1つの消費者と購読関係を結ぶ度にデータを通知するためのタイムラインを生成する

Hot な生産者

f:id:azuuun:20180818181001p:plain

  • Hot な生産者は 複数の消費者と購読関係を結ぶ
  • 既に生成しておいたタイムラインに対して購読関係を結んだ消費者が後から加わるかたち

購読のタイミング

  • Cold な生産者に対する購読は、購読開始時点で生産者側でデータの生産が開始される
  • Hot な生産者に対する購読は、購読を開始したといっても生産者側でデータが生成されるとは限らない
  • Hot な生産者を購読する場合、途中からのデータを通知される可能性もあるため、複数の購読者が同じデータを受け取れるとは限らない

RxJava での Cold / Hot な生産者

  • 基本的に生成メソッドで作られる生産者は Cold な生産者である
  • Hot な生産者をつくるには Cold な生産者を作ってから Hot な生産者へと変換するメソッドを呼んで変換するか、 Processor や Subject をつくる
  • Hot な Flowable / Observable として ConnectionFlowable / ConnectionObservable がある
    • Cold な Flowable / Observable を Hot な生産者に変換するメソッドを呼ぶと 上記2つが生成される

次の記事

azunobu.hatenablog.com

参考

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)