【发布时间】:2017-03-17 10:53:58
【问题描述】:
好的,所以我正在尝试使用retrofit2 来实现rxJava2。目标是只打一次电话并将结果广播到不同的班级。例如:我的后端有一个地理围栏列表。我需要 MapFragment 中的该列表以在地图上显示它们,但我还需要该数据来为实际触发器设置 pendingIntent 服务。
我尝试关注这个 awnser,但我得到了各种各样的错误: Single Observable with Multiple Subscribers
目前情况如下:
GeofenceRetrofitEndpoint:
public interface GeofenceEndpoint {
@GET("geofences")
Observable<List<Point>> getGeofenceAreas();
}
地理围栏DAO:
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); 时,它每次都在做一个单独的电话。谢谢
【问题讨论】:
标签: java android retrofit rx-java observer-pattern