ich RxAndroid bin mit und Retrofit für httprequest, ist mein Code wie folgt:RxAndroid: Retrofit funktioniert nicht zum zweiten Mal?
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);
Mein Szenario wie folgt aus: jedes Mal, wenn ich auf die Schaltfläche klicken „apiService.checkAccount()“ Methode ausgelöst. Das erste Mal: Klicken Sie auf die Schaltfläche, httpRequest gesendet wird und ich kann Antwort erhalten
Klicken Sie jedoch das zweite Mal, keine httpRequest wurde gesendet und die Protokolle zeigt "I/Choreographer: 115 Frames übersprungen! Die Anwendung kann tun zu viel Arbeit auf dem Haupt-Thread. "
Allerdings, wenn ich Code
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) {
}
});
}
});
Das Retrofit ändern funktioniert sehr gut, kann es Httprequest so oft wie Ihr wünschen schicken?
Sieht aus wie der "Subscriber" kann nicht eine Instanz sein?
Warum, Irgendeine Idee?
Dank
In diesem ersten Teil Code: "apiService.checkAccount (mUser.getEmail()). ObserveOn (AndroidSchedulers.mainThread()). SubscribeOn (Schedulers.newThread()). Subscribe (mSubscirber);", tue ich "mSubscirber.unsubscirbe()" nach "onComplete" funktioniert der zweite Klick immer noch nicht – user1072605