BehaviorRelay
を作成してから、accept()
を使用してネットワークコールを開始します。BehaviorRelay経由でルーティングしたときにRetrofitでobservableを2回呼び出す必要があります
BehaviorRelay<Object> behaviorRelay = BehaviorRelay.createDefault(Observable.empty());
behaviorRelay.accept(searchDiscogsInteractor.getArtistsReleases(id));
これは、ネットワーク呼び出しObservable
で行われているものです。私は、その後subscribe()
そのBehaviorRelay
に私は正しい結果を得るために、サブスクリプションに加入する必要がある場合
public Single<List<Release>> getArtistsReleases(String artistId)
{
return discogsService.getArtistReleases(artistId, token, "asc", "500")
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.flatMapIterable(RootReleaseResponse::getReleases)
.filter(release -> !release.getRole().equals("TrackAppearance"))
.toList();
}
。最初のサブスクリプションで私はObservableToListSingle
を返信してから、subscribe()
としてから正しい値を得ることができます。
behaviorRelay.subscribe(o ->
{
Log.e(TAG, o.toString());
((ObservableToListSingle) o).subscribe(o1 ->
Log.e(TAG, o1.toString())); <-- correct value
});
どうしてですか?どこかでsubscribe()
への電話がありませんか?