使用Retrofit和RX-java处理没有networking的正确方法

我想在调用我的rx翻新服务之前检查手机是否连接到互联网。 如果没有连接,我想返回一个包含错误的假响应。

我用下面的解决scheme结束,使用defer(),但我认为它可以更好,任何提示?

private Observable<Response> checkNetwork(Observable<Response> retrofitService) { return Observable.defer(new Func0<Observable<Response>>() { @Override public Observable<Response> call() { if (!isOnline()) { return Observable.just(Response.error(R.string.error_no_network_label))); } return retrofitService; } }); } 

  • Rxjava和Volley请求
  • Retrofit 2.0 + RxJava +错误的JSON正文
  • 什么导致HTTP失败:java.net.SocketException:套接字closures?
  • 如何忽略错误并继续无限流?
  • 使用RXJava获取标题信息和改进
  • 如何实现INotifyPropertyChanged的RxJava等价物来创buildObservable数据模型?
  • Rxjava和Volley请求
  • 为什么在Android上使用Retrofit的RxJava doOnError()不起作用,但是Subscriber onError会起作用
  • 你可以像这里描述的那样实现改进的ErrorHandler: https : //stackoverflow.com/a/21055979/2927901

    然后在doOnError方法或你的订阅者的onError方法中处理抛出的exception。