2017-02-10 19 views
1

websocket接続からデータを受け取るアンドロイドアプリケーションがあります。このデータはハッシュマップに格納され、アプリケーションのいくつかの点から回復する必要があります。 私は、そのデータでObservable.just()メソッドを作成する "取得"メソッドを作成しましたが、データをwebsocketから受け取ったときに別のObservable.just()が必要です。データ、どうすればいいですか? Observableオブジェクトを作成しなければならず、そのオブザーバブルに対して常に「just」を実行する必要がありますか? 同じ加入者に対して常に受信するためにデータをどのように発信する必要がありますか(レルムと同じ方法)事前にandroidで観測可能なエミッタを作成する

おかげ

答えて

1

データは のWebSocketから受信したときに最初に観察の加入者が、私はそれをどのように行う必要があり、 更新されたデータを受け取ることができるように?私は別のObservable.justを()が必要ですか

件名はあなたが探しているものです。件名は、SubscriberObservableと同時に動作できるオブジェクトです。あなたのget()がObservable.justの代わりにSubject#asObservableを返し、あなたがSubject#onNextを呼び出すWebSocketから新鮮なデータを取得するたびに、あなたは望ましい動作を得るでしょう。 Subject自体は抽象ですが、RxJavaはいくつかの具体的な実装を提供しています。それらの違いを理解し、よりよく合うものを選択するには、documentationを参照してください。

2

RxJavaにはあなたのケースでは、あなたが別のものに観測値の放出を渡すために、被験者を使用する必要があります。

チェックあなたがここにホット観測https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/connectable/HotObservable.java

のより多くの例を見ることができます

/** 
* In this example we see how using hot observables ReplaySubject we can emit an item on broadcast to all the observers(subscribers). 
* 
* @throws InterruptedException 
*/ 
@Test 
public void testHotObservableUsingReplaySubject2() throws InterruptedException { 
    Observable<Long> interval = Observable.interval(100L, TimeUnit.MILLISECONDS); 
    Subject<Long, Long> publishSubject = ReplaySubject.create(1); 
    interval.subscribe(publishSubject); 
    Thread.sleep(1000L); 
    publishSubject.subscribe(System.out::println, (e) -> System.err.println(e.getMessage()), System.out::println); 
} 

このユニットテスト

関連する問題