【发布时间】:2015-05-12 06:16:22
【问题描述】:
我想知道如何忽略异常并继续无限流(在我的情况下是位置流)?
我正在获取当前用户位置(使用 Android-ReactiveLocation),然后将它们发送到我的 API(使用 Retrofit)。
在我的情况下,当网络调用期间发生异常(例如超时)时,onError 方法被调用并且流自行停止。如何避免?
活动:
private RestService mRestService;
private Subscription mSubscription;
private LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(100);
...
private void start() {
mRestService = ...;
ReactiveLocationProvider reactiveLocationProvider = new ReactiveLocationProvider(this);
mSubscription = reactiveLocationProvider.getUpdatedLocation(mLocationRequest)
.buffer(50)
.flatMap(locations -> mRestService.postLocations(locations)) // can throw exception
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
}
休息服务:
public interface RestService {
@POST("/.../")
Observable<Response> postLocations(@Body List<Location> locations);
}
【问题讨论】:
-
查看带有点击事件异常的类似答案:stackoverflow.com/questions/26154236/…
-
大声笑问题的设置过于复杂。您可以将这一行减少到几行;忽略项目特定的语义。
标签: android rx-java rx-android