ok, donc j'essaie d'implémenter rxJava2 avec retrofit2. Le but est de faire un appel une seule fois et de diffuser les résultats dans différentes classes. Par exmaple: J'ai une liste de geofences dans mon backend. J'ai besoin de cette liste dans mon MapFragment pour les afficher sur la carte, mais j'ai également besoin de ces données pour définir le service pendingIntent pour le déclencheur réel.Android Seul observateur avec plusieurs abonnés dans des classes distinctes
J'ai essayé la suite de cette awnser, mais je reçois toutes sortes d'erreurs: Single Observable with Multiple Subscribers
La situation actuelle est la suivante:
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/toute autre classe où je dois les résultats
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
}
Qu'est-ce que je fais mal, parce que quand je l'appelle new GeofenceDao().loadGeofences().subscribe(this::handleGeoResponse, this::handleGeoError);
qu'il fait un appel séparé à chaque fois. Thx