私はrxJava2の中で、いったんアクションが実行されると再び加入者に電話をかけることができる方法を探しています。私の意図を具体的に説明しましょう。RxJava 2でサブスクライバを再生する方法は?
私はネットワークにretrofit2を使用していますが、それは問題ではありません。この質問はrxJavaに関するものです。私はトークンをリフレッシュした後、APIコールを再試行したいと思います。私が設定する必要があるのは、私がapi呼び出しを行うたびに、トークンが期限切れになり、別のAPIコールを呼び出してトークンをリフレッシュするという私の義務です。トークン がリフレッシュされた後、私はにもう一度に期限切れのトークンを持つ同じapiコールを呼び出す必要があります。したがって、ユーザーはシームレスにトークンをリフレッシュします。ここで
は私のデフォルトである私は、すべてのネットワークコールに使用購読:
public class DefaultSubscriber<T> implements Observer<T> {
Disposable disposable;
@Override
public void onSubscribe(@NonNull Disposable d) {
Timber.d("subscribing called now ...");
disposable = d;
}
@Override
public void onNext(@NonNull T t) {
Timber.d("onNext called now ..."+t);
}
@Override
public void onError(@NonNull Throwable e) {
Timber.e(e);
Timber.d("onError called now ...");
if (e instanceof HttpException) {
//todo analytics can go here
// We had non-2XX http error
HttpException exception = (HttpException) e;
if (exception.code() == 401){
//token expired here, handle it
//so i'll call another api here (to refresh token)but then i need to replay this subscriber , how ?
}
}
if (e instanceof IOException) {
// A network or conversion error happened
}
}
@Override
public void onComplete() {
Timber.d("onComplete called now ...");
}
public void unsubscribe() {
Timber.d("Un-subscribed called now ..");
if (disposable != null && !disposable.isDisposed()) {
disposable.dispose();
}
}
}
は、サブスクリプションを再生する方法はありませんか?