2016-10-19 2 views
0

私は、サーバーとログインアカウントを接続する機能を持っている:rxjava、どのように再試行するか(retryWhen)特定の状況を理解していますか?

loginAccount().subscribe(new Subscriber<Response>() { 
     @Override 
     public void onCompleted() { 

      System.out.println("success"); 
     } 

     @Override 
     public void onError(Throwable e) { 
      e.printStackTrace(); 

     } 

     @Override 
     public void onNext(Response authenticationResponseResult) { 
      System.out.println(authenticationResponseResult,toString()); 

     } 
    }); 

しかし、てSocketTimeoutExceptionがあるのserveral回あります。ほとんどの時間

Observabe<Response> loginAccount(); 

を、それが成功し、ログインすることができます。 でSocketTimeoutExceptionを再試行したい場合は、を最大で2回再試行してください。

どのように実装できますか?

私はおそらく私がretryWhenを使用することができます知っているが、私は例外がてSocketTimeoutExceptionで、どのように高々二回を再試行する場合にのみ、それを使用する方法がわかりません。

答えて

0

利用retryの2パラメータの過負荷:

loginAccount() 
.retry((throwable, count) -> count < 2 && (throwable instanceof SocketTimeoutException)) 
.subscribe(....); 
関連する問題