0
私はRXJavaでとても新しいです。 私は、初期化でほとんど同じことをする必要がある複数の科目を定義していますが、その一般的な種類は異なります。 現在、私の解決策は、次のようになります。RxAndroidがオブジェクトのコンテンツを購読しています
BehaviorSubject<PepPoint> mUpdateSubject = BehaviorSubject.create();
BehaviorSubject<String> mMessageSubject = BehaviorSubject.create();
mMessageSubject.onNext(mMessage);//type string
mMessageSubject.distinctUntilChanged().skip(1).debounce(5, TimeUnit.SECONDS).sample(1, TimeUnit.MINUTES).subscribe(this::onChanged);
BehaviorSubject<Double> mTriggerRadiusSubject = BehaviorSubject.create();
mTriggerRadiusSubject.onNext(mTriggerRadius);//type double
mMessageSubject.distinctUntilChanged().skip(1).debounce(5, TimeUnit.SECONDS).sample(1, TimeUnit.MINUTES).subscribe(this::onChanged);
BehaviorSubject<SimpleLocation> observableLocation = BehaviorSubject.create();
observableLocation.onNext(mLocation);//type Location
observableLocation.distinctUntilChanged().skip(1).debounce(5, TimeUnit.SECONDS).sample(1, TimeUnit.MINUTES).subscribe(this::onChanged);
/*And same for many several other variables*/
あなたは繰り返しが多いことがわかります。 は、だから私は、好ましくは、このようになりますatchieveしたいと考えています何:これが動作しない理由を私は理解していない
{
BehaviorSubject<PepPoint> mUpdateSubject = BehaviorSubject.create();
Map<Object, BehaviorSubject> subjectMap = new TreeMap<>();
subjectMap.put(mMessage, BehaviorSubject.<String>create());
subjectMap.put(mTriggerRadius, BehaviorSubject.<Double>create());
subjectMap.put(mLocation, BehaviorSubject.<Location>create());
subjectMap.put(mPreconditions, BehaviorSubject.<List<String>>create());
subjectMap.put(mLanguage, BehaviorSubject.<String>create());
for(Map.Entry<Object, BehaviorSubject> entry:subjectMap.entrySet()){
entry.getValue().onNext(entry.getKey());
mMessageSubject
.distinctUntilChanged()
.skip(1)
.debounce(5,TimeUnit.SECONDS)
.subscribe(this::onChange);
}
}
。私も試しました Map<? super Object, BehaviorSubject<? super Object>> subjectMap = new TreeMap<>();
提案? ありがとう