私はretrofit2でrxJava2を実装しようとしています。目標は、一度だけ電話をかけて結果をさまざまなクラスにブロードキャストすることです。例:バックエンドにジオフェンスのリストがあります。 MapFragmentのリストを地図上に表示する必要がありますが、実際のトリガーにpendingIntentサービスを設定するためにはそのデータも必要です。別のクラスに複数のユーザが参加している単一のオブザーバ
私はこのawnser以下しようとしたが、私はエラーのすべての種類を取得: Single Observable with Multiple Subscribers
現在の状況は以下の通りである:
GeofenceRetrofitEndpoint:
public interface GeofenceEndpoint {
@GET("geofences")
Observable<List<Point>> getGeofenceAreas();
}
GeofenceDAO:
public class GeofenceDao {
@Inject
Retrofit retrofit;
private final GeofenceEndpoint geofenceEndpoint;
public GeofenceDao(){
InjectHelper.getRootComponent().inject(this);
geofenceEndpoint = retrofit.create(GeofenceEndpoint.class);
}
public Observable<List<Point>> loadGeofences() {
return geofenceEndpoint.getGeofenceAreas().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.share();
}
}
MapFragment /私は
private void getGeofences() {
new GeofenceDao().loadGeofences().subscribe(this::handleGeoResponse, this::handleGeoError);
}
private void handleGeoResponse(List<Point> points) {
// handle response
}
private void handleGeoError(Throwable error) {
// handle error
}
結果を必要とする他のクラス私が間違って何をやっている、私はnew GeofenceDao().loadGeofences().subscribe(this::handleGeoResponse, this::handleGeoError);
呼び出すときには、別の呼び出しを毎回やっているので。 Thx