Syncronizing variables estáticas en clase interna

Delsh:

básicamente estoy tratando de modificar una variable estática de una clase interna y luego quiero leer esa variable estática pero no está siendo establecido correctamente (por lo que he leído, el problema puede ser que el programa se ejecuta en varios subprocesos y la hilo que está leyendo el valor estático que no podría obtener una actualización y sólo leer un caché?) I intentado fijar mi variable estática al volátiles, pero no tuvo ningún efecto.

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

En este ejemplo isExecutionSucessful es falso, incluso si sigue adelante ApiManager.isExecutionSuccessful = true;

donquih0te;

ResponseCall.enqueue()asíncrona envía la solicitud y notifica a la devolución de llamada de su respuesta, por lo ApiManager.evaluateResponse(responseLoginCall, MainActivity.this)que se llamó antes de la solicitud completada responseCall.enqueue().

Sugiero hacer una llamada sincrónica con la responseCall.execute()función.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=318669&siteId=1
Recomendado
Clasificación