这是我的代码:通过这种方法,
如果数据成功接收变量将在方法内为 true
,我将一些数据发送到我的 API 服务器successonResponse
private boolean success=false;
public boolean commit(){
requestHandler.insertFields(tableName,values).enqueue(new Callback<DatabaseModel>() {
@Override
public void onResponse(Call<DatabaseModel> call,
Response<DatabaseModel> response) {
if (response.isSuccessful())
Log.i("debug8","result is:"+response.body().toString());
else
Log.e("debug8","error in server response:"+response.toString());
success=true;
}
@Override
public void onFailure(Call<DatabaseModel> call, Throwable t) {
Log.e("tempo",t.getMessage());
}
});
return success;//returns false before finishing the request
}
Run Code Online (Sandbox Code Playgroud)
在我的活动中我想检查这样的结果:
Database db=new Database("cars");
db.put("field1","val1")
.put("field2","val2");
if(db.commit())
Toast.makeText(this, "data inserted successfully", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "failed to insert new record", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
问题是提交方法结果总是 false,因为代码在改进排队方法完成其工作之前返回 false
制作一个自定义侦听器或类似的东西来执行此操作是一个好主意吗?
提前致谢
是的,您需要为此创建侦听器,因为这些调用是异步发生的,这就是它始终返回的原因false。
您可以创建interface如下所示的内容。
public interface RetrofitResponseListener {
void onSuccess();
void onFailure();
}
Run Code Online (Sandbox Code Playgroud)
并将其作为参数传递到您的方法中。
public void commit(final RetrofitResponseListener retrofitResponseListener) {
requestHandler.insertFields(tableName, values).enqueue(new Callback<DatabaseModel>() {
@Override
public void onResponse(Call<DatabaseModel> call,
Response<DatabaseModel> response) {
if (response.isSuccessful())
retrofitResponseListener.onSuccess();
else
retrofitResponseListener.onFailure();
}
@Override
public void onFailure(Call<DatabaseModel> call, Throwable t) {
retrofitResponseListener.onFailure();
}
});
}
Run Code Online (Sandbox Code Playgroud)
最后在你喜欢的地方使用它:
private void setListener() {
commit(new RetrofitResponseListener() {
@Override
public void onSuccess() {
}
@Override
public void onFailure() {
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在做任何你想做的事onSuccess或者onFailure。
| 归档时间: |
|
| 查看次数: |
7295 次 |
| 最近记录: |