2015-02-25 15 views
8

के साथ कोई नेटवर्क संभालने का उचित तरीका मैं यह जांचना चाहता हूं कि मोबाइल मेरी आरएक्स रेट्रोफिट सेवा का आह्वान करने से पहले इंटरनेट से कनेक्ट है या नहीं। अगर कनेक्ट नहीं है तो मैं एक नकली प्रतिक्रिया वापस करना चाहता हूं जिसमें एक त्रुटि है।रेट्रोफिट और आरएक्स-जावा

मैं डिफर() का उपयोग करके नीचे दिए गए समाधान के साथ समाप्त हुआ, लेकिन मुझे लगता है कि यह बेहतर हो सकता है, कोई संकेत?

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; 
      } 
     }); 
    } 

उत्तर

2

आप यहाँ वर्णित की तरह पुराना वापस ErrorHandler लागू कर सकते हैं: https://stackoverflow.com/a/21055979/2927901

और फिर doOnError विधि या अपने ग्राहकों के onError विधि में फेंक दिया अपवाद संभाल।