Я понимаю, что по умолчанию наблюдаемые, созданные путем модификации, являются «холодными» наблюдаемыми.Модифицировать наблюдаемые работы только один раз
У меня есть этот конкретный призыв к моему серверу конечной
@POST("oauth/token")
Observable<Token> signIn(@Field("username") String username, @Field("password") String password);
Когда я делаю:
public class LoginUseCase extends Subscriber<Profile> {
public void logIn(String username, String password) {
Subscription subscription = myApi.signIn(username, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this);
this.add(subscription);
}
}
я получаю onNext
onError
onComplete
обратные вызовы, как и следовало ожидать.
Проблема возникает, когда логин завершается с ошибкой, и я пытаюсь повторить попытку. Вызов метода login()
во второй раз не вызывает HTTP-вызов, и я не получаю никаких обратных вызовов.
Кстати, Im делает это на мой onComplete()
метод
@Override
public void onCompleted() {
this.unsubscribe();
}
Есть ли способ сказать модифицированную/rxandroid повторно сделать каждый раз HTTP вызова я называю myApi.signin()
. Я даже подхожу к этому правильно?
Примечания: - Я использую dagger2 в моем проекте, а объект myApi - одноэлементный. - Я могу воспроизвести ошибку, даже если я использую разные настройки имени пользователя и пароля между первой и второй попытками.
Без кода я предполагаю, что в вашем фрагменте/активности есть только один подписчик. Вам нужно переизбрать наблюдаемый, чтобы он работал. В вашем контексте есть только один экземпляр подписчика LoginUseCase? – gaara87
Да, это только один экземпляр LoginUseCase в моем фрагменте. Как переизбрать наблюдаемый? Благодаря! – feresr
Jus повторно инициализирует его, или если вы можете отредактировать свой вопрос, чтобы содержать часть, в которой вы используете объект, я могу показать вам необходимые изменения. – gaara87