gpt4 book ai didi

java - 同步内部类中的静态变量

转载 作者:行者123 更新时间:2023-12-02 01:00:15 25 4
gpt4 key购买 nike

基本上,我试图从内部类修改静态变量,然后我想读取该静态变量,但它没有被正确设置(从我读到的内容来看,问题可能是程序在多个中运行)线程和读取静态值的线程可能无法获得更新而只读取缓存?)我尝试将静态变量设置为 volatile ,但没有效果。

主 Activity ->

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;
} ...
});

在此示例中,isExecutionSucessful 为 false,即使它经过 ApiManager.isExecutionSuccessful = true;

最佳答案

responseCall.enqueue() 异步发送请求并通知回调其响应,因此 ApiManager.evaluateResponse(responseLoginCall, MainActivity.this) 在请求之前被调用已完成 responseCall.enqueue()

我建议使用 responseCall.execute() 函数进行同步调用。

关于java - 同步内部类中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60750817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com