Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取异步任务的返回_Java_Android - Fatal编程技术网

Java 获取异步任务的返回

Java 获取异步任务的返回,java,android,Java,Android,我有一个类请求在线json。Is工作正常,但函数无效,我需要函数向活动返回true或false。例如: public class Async extends AbstractService{ public void getData(fina Context context){ JSONObject param = new JSONObject(); try { param.put("field_1", "1"); param.put("fi

我有一个类请求在线json。Is工作正常,但函数无效,我需要函数向活动返回true或false。例如:

public class Async extends AbstractService{
  public void getData(fina Context context){
    JSONObject param = new JSONObject();
    try {
        param.put("field_1",   "1");
        param.put("field_3",  "2");
        param.put("field_3", "3");

    }catch (Exception e) {}


    requester = new HttpRequestController().sendPost("auth/device", param, new HttpRequestController.CallBackRequest(){
        @Override
        public void run(final String result) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                     if(resultObj.optBoolean("success")) {
                       //here return true or false
                     }
                }
            }).start();

            System.out.println("test auth 1: " + result);
        }
    });
  }
}

public class MainActivity extends baseActivity{
 ....
     protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

     Async auth = new Async();
     auth.getUserDevice(this); //how to test is true or false ?
   }

}

将void更改为布尔值,在函数中,您可以验证是否确实在某个地方发送或生成了json,并放置一个条件: if(json.length()>0)
返回true

出于某种原因,该函数为
void
。异步函数不应该返回某些内容,因为它们是异步的。不可能依赖于你不知道何时(甚至是否)会归还的东西


如果您有兴趣在异步任务成功完成的情况下做一些事情(我猜是这样),那么您应该这样做。这是一个活动的操作,从代码块内部开始,您知道操作已经完成。此操作可以重置状态,也可以发出事件通知感兴趣的人该事件

像这样使用异步任务:

public class MyTask extends AsyncTask<Void,Boolean,Boolean> {
    JSONObject param;
    MyTask(){
        param = new JSONObject();
        try {
            param.put("field_1",   "1");
            param.put("field_3",  "2");
            param.put("field_3", "3");

        }catch (Exception e) {}
    }

    @Override
    protected Boolean doInBackground(Void... voids) {
            // do your request call and get result then,

             return resultObj.optBoolean("success");
    }
}
public class MainActivity extends baseActivity {
      ....

    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        boolean b = new MyTask().execute().get();
    }
}

伟大的现在我明白了。Tks