使用函数内部的抽象方法获取正确的返回值

时间:2017-11-30 16:35:54

标签: java android android-asynctask abstract

我想检查方法中的AsyncTask的结果。

  private boolean isRequestSuccessfull(){
    boolean test = false;
    new HttpRequest() {
        @Override
        public void onResponseReceived(JSONObject result) {
            if (result.optBoolean("success")){
                return true;
            } else {
                return false;
            }
        }
    }.get(getBaseContext(), "myUrl");

    return test;
}

isRequestSuccessfull检查httpRequest的结果是否成功。

HttpRequest是一个调用服务器的AsyncTask,onResponseReceived是允许我获取请求结果的抽象方法。

此代码无效,因为我无法在onResponseReceived中包含返回布尔值。 我无法在onResonseReceived中分配值测试并返回它,因为返回将在分配之前执行。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

而不是从您的方法返回boolean而不是void,并让您的匿名HttpRequest在收到回复时进行方法调用,例如

 new HttpRequest() {
     @Override
     public void onResponseReceived(JSONObject result) {
         if (result.optBoolean("success")) {
             callMethodWithBoolean(true);
         } else {
             callMethodWithBoolean(false);
         }
     }
 }.get(getBaseContext(), "myUrl");