2017-01-28 8 views
3

にRX哲学(RxJava、RxJS、Rxのを...)理解(例えばRxJavaで)反応性プログラミングを使用の場合問題アンドロイド

  1. いくつかのプロパティを持つユーザーオブジェクト(名前、姓があります) - 加入者
  2. ユーザーの変更(名前の変更)

は右番目の仮定である - 観察可能な

  • 活動は、現在のユーザ名を示す両方2つの断片が含まれています観察されたデータソースが変更された場合(両方のフラグメントが同じユーザーオブジェクトにサブスクライブされている場合)、表示された名前で自動的に変更されるはずですか?

    私が今見たことから、rxjavaとandroidに関するすべての例は、非同期呼び出しと、トリガされた/サブスクリプションによって呼び出された返されたデータのストリームの処理に焦点を当てています。観測されているソースが変更された場合、どうなりますか?加入者は誘発されるべきかどうか?

    はここから撮影:例えば https://en.wikipedia.org/wiki/Reactive_programming

    、命令型プログラミング設定で、:=は、B + C瞬時にB + Cの結果が割り当てられていることを意味する表現でありますbとcの値はaの値に影響を与えずに変更することができます。 しかし、リアクティブプログラミングでは、プログラムがa:= b + cという文を再度実行することなく、bとcの値が変わるたびにaの値が自動的に更新されます。

    rxJavaで動作を設定する方法の例は、wikipediaの記事に記載されていますか?

  • +0

    をパターン –

    +0

    私はMVPが何であるかを知る。問題の焦点はフロントエンドではなくrx(rxjava)であり、それを理解することです。 1 - 2 - 3の例は、私の誤解をよりよく説明するための理論的なものです。 – ramden

    答えて

    2

    ユーザーオブジェクト(ヒント:subject/operator)で更新を共有するobservableを作成し、両方のフラグメントが同じ観察可能な状態になってサブスクライブすると、新しいバージョンのユーザーが取得されます。あなたは、これは簡単にcombineLatest演算子使用して行うことができ観測としてb、cの表現与えられたWikipediaの例としては

    、:私はあなたがモデルビュープレゼンター(MVP)を探していると信じてい

    Subject<Integer> sb; 
    Subject<Integer> sc; 
    
    Observable.combineLatest(sb, sc, (b, c) -> b + c) 
          .subscribe(outcome -> 
           System.out.println("Always up to date value here: " + outcome) 
         ); 
    
    +0

    被験者は本質的に、観察可能なものを常に引き起こすことなく他の場所から使用できる冷たい観察可能なものへのプロキシです。それは好きですか?>ねえ、この観察可能なものはここやそこから購読されていますが、今はテーマが必要です(必要でない場合は常に同じコードを呼び出すとは限りません)。 – ramden

    +0

    あなたはプロキシになることができます、彼らはObserverとObservableの両方です(http://reactivex.io/RxJava/javadoc/io/reactivex/subjects/Subject.html参照)。 しかし、それらのよりよい理解を得るためには、@ akarnokdのブログ記事をご覧ください:http://akarnokd.blogspot.com/2015/06/subjects-part-1.html この例では、件名手作業で 'onNext()'を呼び出すだけで、それがどのように動作するかを見ることができるからです。それはObservable とすることができます。 – MatBos

    関連する問題