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