Я использую RxAndroid и Дооснащение для HTTPRequest, мой код, как показано ниже:RxAndroid: Модернизация не работает во второй раз?
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(logging)
.authenticator(new DigestAuthenticator())
.build();
// retrofit with custom client
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(NetUtil.getServerBaseUrl())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(client)
.build();
ApiService apiService = retrofit.create(ApiEndpoints.class);
CustomerSubscriber mSubscriber = new CustomerSubscriber();
apiService.checkAccount(mUser.getEmail()).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.newThread()).subscribe(mSubscirber);
//Retrofit
@Headers({
"Accept: application/json;charset=utf-8",
"Content-Type: application/json;charset=utf-8"
})
@HEAD("/account")
Observable<Result<Void>> rxHeadAccount(
@Query("email") String encryptedEmail);
Мой сценарий как это: каждый раз, когда я нажимаю на кнопку «apiService.checkAccount()» метод будет вызван. В первый раз: нажмите кнопку, отправляется httpRequest, и я могу получить ответ
Однако, нажмите второй раз, не было отправлено httpRequest, а журналы показывают «I/Хореограф: пропущено 115 кадров! Приложение может выполнять слишком много работы по его основному потоку. "
Однако если изменить код
apiService.checkAccount(mUser.getEmail()).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.newThread()).subscribe(new Subscriber<Result<Void>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Result<Void> voidResult) {
}
});
}
});
модифицированное очень хорошо работает, он может отправить HttpRequest столько раз, как хочешь?
Похоже, что «Подписчик» не может быть одним экземпляром?
Почему, Есть идеи об этом?
Благодаря
Однако в этом первом фрагменте кода: «apiService.checkAccount (mUser.getEmail()) .Обратите внимание (AndroidSchedulers.mainThread()). SubscribeOn (Schedulers.newThread()). Subscribe (mSubscirber); «mSubscirber.unsubscirbe()» после «onComplete», второй щелчок по-прежнему не работает – user1072605