RxJavaの世界で科目を使用することは一般的にお勧めできません。私は被験者が容易に達成できる被験体の特性変化を観察しようとしている。私はrx.netがObservable.FromEvent()を提供してこの状況を簡単に処理できることを知っていますが、それらが非主題ベースのJavaの代替であるかどうかは疑問でした。RxJava - 科目の使用
0
A
答えて
0
あなたはObservable.create
メソッドを介してその機能を実現することができます。
Observable.create(emitter -> {
PropertyObserver x = event -> emitter.onNext(event)
yourObject.addObserver(x);
// Set cancellable after adding observer, if the observable is
// disposed already it will properly remove the listener.
emitter.setCancellable(() -> yourObject.removeObserver(x));
});
しかし、あなたがするたびに、この観測可能はそれが関連付けられているオブジェクトに新しいリスナーを追加して使用されていることを認識する必要があります。複数のオブザーバーがオブジェクトのイベントに依存している場合は、share()
とpublish()
演算子を適用することで回避できます。
0
create
オペレータを使用してください。ここでは、完全なサンプルを提供します。
package xdean.stackoverflow.rx;
import java.util.LinkedList;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.disposables.Disposable;
public class Q47000589 {
public static void main(String[] args) {
Property<Integer> p = new Property<>(1);
Disposable d = p.listen().subscribe(i -> System.out.println("Listen: " + i));
p.set(2);
p.set(3);
d.dispose();
p.set(4);
p.set(5);
}
public static class Property<T> {
T value;
List<ObservableEmitter<? super T>> emitters = new LinkedList<>();
public Property(T value) {
this.value = value;
}
T get() {
return value;
}
void set(T t) {
this.value = t;
emitters.forEach(e -> e.onNext(t));
}
Observable<T> listen() {
return Observable.create(e -> {
emitters.add(e);
e.onNext(value);
e.setCancellable(() -> emitters.remove(e));
});
}
}
}
されて出力される。
Listen: 1
Listen: 2
Listen: 3
関連する問題
- 1. RxJS科目とAngular2科目
- 2. 2つの異なる科目が1つのテーブルを使用する
- 3. RxJS他の行動科目からの行動科目を作成する適切な方法?
- 4. RxJavaを使用するループ
- 5. RxJavaを使用したRealmRecylerAdapter
- 6. RxJavaリスト内の項目を検索
- 7. 更新単一のリスト項目RXJava
- 8. RxJavaの "シリアライズ"メソッドの使用例
- 9. RxJavaの実際の使用例件名
- 10. RxJava/RxAndroidを使用したカスタムイベントバスのフォールバックオブザーバ?
- 11. onError、RxJavaの値を使用したい
- 12. RxJavaを使用したアイテムのフィルタリスト
- 13. 科学プロット用のIronPythonライブラリ
- 14. 同じ表内のすべての科目は私のシートマーク
- 15. 科目 - [?BehaviorSubject.onBeforeNext]ごとに次の値に変更を適用する
- 16. RxJava 2.0でReactive-Streamsプロセッサを使用
- 17. retrofitとrealmを持つRxjavaを使用
- 18. RxJavaでスレッディングを使用するには?
- 19. Realm + RxJavaでジェネリックを使用する
- 20. AndroidでRxJavaを使用するには?
- 21. AndroidでRxJavaを使用したキューイングタスク
- 22. RxJavaでレルムを使用する2
- 23. RabbitMQ - トピック交換 - 複数の同じトピック同じサブ科目
- 24. 学生と科目へのシンプルなシステムを作成する
- 25. 教師、科目、等級データベースの設計提案
- 26. PHP各科目の成績データを更新しています
- 27. 異なるRxJS科目のセマンティクスは何ですか?
- 28. 私は同じ科目の学生sidを学ぶsid = "02"
- 29. Androidのアニメーション用のRxJava
- 30. 進捗状況バーを使用して残っている勘定科目の残高を表示