我对具有以下 struct 的服务器进行了异步调用:
AuthAPI authAPI = retrofitService.getRetrofit().create(AuthAPI.class);
authAPI.registerUser(requestBody)
.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(@NonNull Call<ResponseBody> call,
@NonNull Response<ResponseBody> response) {
// Response processing.
}
@Override
public void onFailure(@NonNull Call<ResponseBody> call,
@NonNull Throwable t) {
// Failure processing.
}
});
此代码在按钮的onClick()
方法内执行.在此代码之后,新的片段将替换当前代码,但当此代码由于.enqueue()
是异步的而执行时,异步部分尚未完成,因此应用程序将崩溃.因此,我需要等待执行异步代码,然后显示新的片段.
我可以使用execute()
方法而不是enqueue()
方法,但如果我理解正确的话,在execute()
方法完成之前,整个UI线程将被冻结,ProgressBar动画将不会运行.这对我来说也不好.
所以,我要问的是,我如何等待服务器响应被处理,而不锁定我的UI线程,而让ProgressBar旋转?