Java 如何从onResponse返回值
如何从翻新2查询返回值或执行类似操作? 我需要返回未连接的变量。 问题是,当我调用testConnection()时,它会自动返回false,因为发送到服务器的请求尚未处理。 我必须等待请求得到处理,但如何处理Java 如何从onResponse返回值,java,android,retrofit,wait,Java,Android,Retrofit,Wait,如何从翻新2查询返回值或执行类似操作? 我需要返回未连接的变量。 问题是,当我调用testConnection()时,它会自动返回false,因为发送到服务器的请求尚未处理。 我必须等待请求得到处理,但如何处理 static boolean isConnected = false; public static boolean testConnection() { apiInterface = ApiClient.getApiClient().create(Ap
static boolean isConnected = false;
public static boolean testConnection() {
apiInterface = ApiClient.getApiClient().create(Api.class);
Call<String> call = apiInterface.testConnection();
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.body().equals("Connected")) {
isConnected = true;
} else {
isConnected = false;
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.d("infomessage", t.getMessage());
isConnected = false;
}
});
return isConnected;
}
static boolean isConnected=false;
公共静态布尔testConnection(){
apinterface=ApiClient.getApiClient().create(Api.class);
Call Call=apinterface.testConnection();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.body().equals(“Connected”)){
断开连接=正确;
}否则{
断开连接=错误;
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.d(“infomessage”,t.getMessage());
断开连接=错误;
}
});
返回不连接;
}
函数的排队
功能在后台运行API调用,即另一个线程
任何API调用都不应该在主线程中执行,这就是为什么您不能从队列中返回
但是,您可以在主线程上就地运行API调用。不建议使用它,因为它将在处理API调用时使应用程序UI冻结
实现您试图实现的一种方法是使用一组回调
在方法中添加了两个参数<代码>成功时
,失败时。两者都是lambda,onSuccess
具有bool
参数,onFailure
具有异常
参数
这就是您的代码的外观
public static boolean testConnection(Function<Boolean, Void> onSuccess, Function<Exception, Void> onFailure) {
apiInterface = ApiClient.getApiClient().create(Api.class);
Call<String> call = apiInterface.testConnection();
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.body().equals("Connected")) {
onSuccess.invoke(true);
} else {
onSuccess.invoke(false);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.d("infomessage", t.getMessage());
onSuccess.invoke(false);
onFailure.invoke(t);
}
});
return isConnected;
}
改型的
排队
是一个带有异步回调的非阻塞调用。相反,使用execute()
可能对您有用
testConnection((isConnected) -> {
}, (error) -> {
});