Ulu*_*nov 3 android retrofit retrofit2
如果 saveChanges 函数给我真正的价值,我想运行changesHasBeenSaved。当 Retrofit 完成时,如何获取布尔值、字符串或整数、任何值?是否可以?
我需要一个类似的函数:
public boolean saveChanges()
{
Boolean output = false;
RequestAPI requestAPI = Requests.getRetrofit();
Call<Object> jsonObjectCall = requestAPI.readAllCategoeies();
jsonObjectCall.enqueue(new Callback<Object>() {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
if(response.body() != null) {
output = true;
}
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
call.cancel();
}
});
return output;
}
Run Code Online (Sandbox Code Playgroud)
您应该将方法返回类型更改boolean
为void
异步改造工作。
您应该传递侦听器/回调来获取回调中的状态。
首先创建回调接口如下
public interface ApiCallback {
void onResponse(boolean success);
}
Run Code Online (Sandbox Code Playgroud)
saveChanges 的样子如下
public void saveChanges(final ApiCallback callback)
{
RequestAPI requestAPI = Requests.getRetrofit();
Call<Object> jsonObjectCall = requestAPI.readAllCategoeies();
jsonObjectCall.enqueue(new Callback<Object>() {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
callback.onResponse(response.body() != null);
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
call.cancel();
callback.onResponse(false);
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后你需要调用 saveChanges 方法,如下所示
saveChanges(new ApiCallback () {
public void onResponse(boolean success){
if(success){
// do something
} else{
// do something
}
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7093 次 |
最近记录: |