基本上,我试图从内部类中修改一个静态变量,然后我想读取该静态变量,但它的设置不正确(从我所读取的内容来看,问题可能是程序正在多个线程中运行,并且正在读取静态值的线程可能无法获取更新,而仅读取缓存?)我尝试将静态变量设置为volatile,但没有任何效果。
MainActivity->
ApiManager.evaluateResponse(responseLoginCall, MainActivity.this);
if(ApiManager.isExecutionSuccessful) {
Toast.makeText(this, "We are in", Toast.LENGTH_SHORT).show();
}
ApiManager->
public class ApiManager {
public static volatile boolean isExecutionSuccessful = false;
public static void evaluateResponse(Call<AuthResponse> responseCall, Activity activity) {
responseCall.enqueue(new Callback<AuthResponse>() {
@Override
public void onResponse(@NotNull Call<AuthResponse> call, @NotNull Response<AuthResponse> response) {
if(response.isSuccessful()) {
ApiManager.isExecutionSuccessful = true;
} ...
});
在此示例中,即使通过
ApiManager.isExecutionSuccessful = true;
,isExecutionSucessful也为false 最佳答案
ResponseCall.enqueue()
异步发送请求并通知回调其响应,因此在请求完成ApiManager.evaluateResponse(responseLoginCall, MainActivity.this)
之前调用responseCall.enqueue()
。
我建议使用responseCall.execute()
函数进行同步调用。