'dan çağrılan geri arama çağrısına yol açar. Tüm çağrılar ve geri aramalar iyi çalışıyor. Yalnızca bir http hata kodu nedeniyle geri aramada (aynı geri çağrıyla) bir çağrıyı klonlayıp yeniden denediğim bir sorunum var.Bir aramayı klonlamak, ana iş parçacığı
public static abstract class MyCallback<T> implements Callback<T> {
@Override
public void onResponse(Call<T> call, retrofit2.Response<T> response) {
Timber.d("is this the main thread %b", Looper.myLooper() == Looper.getMainLooper());
if (response.isSuccessful()) {
//success handling
} else {
if (response.code() == 406) {
// remedy reason for failure
call.clone().enqueue(MyCallback.this);
}
}
}
@Override
public void onFailure(Call<T> call, Throwable t) {
Timber.e("onFailure %s", t.getMessage());
}
}
Bu veriyor:
is this the main thread true
is this the main thread false
is this the main thread false
is this the main thread false
is this the main thread false
[looping]
Ben vs. yeni bir arama, çağrı klonlamak Yalnızca geri arama kapalı çağrılır ana iş parçacığı başlayarak diğer/yeni geri aramaları etrafında oynadı. Ortaya çıkan asıl sorun, başarılı bir şekilde denenmiş aramadan sonra kullanıcı arayüzünü değiştirememektir.
Are: Jake Wharton sadece bunun için bir PR yarattı? Kullanıcı Arayüzü değiştirmeyi denediniz mi ve bir istisna var mı? – muratgu
@muratgu Evet. Ben sadece onun üzerinde tökezledim çünkü "görünümler sadece oluşturuldukları iş parçacığından düzenlenebilir" özel durum var. Ancak o zaman ben dahil ettim. Bu looper günlükleri kontrol eder .. – Till
Ben ya retrofit ya da okhttp bir hata buldu düşünüyorum. Ben sadece, çağrılmadan önce yürütme iş parçacığının, çağrılmadan önce klon yöntemiyle oluşturulmasının ana iş parçacığı olmadığını doğruladım. – muratgu