函数完成后启动AsyncTask

时间:2015-02-06 18:01:44

标签: android android-asynctask

我只有一个公共函数,我有一些循环等。在我的函数的开头,我启动我的AsyncTask,它返回一个在此函数结束时需要的值。但不知何故AsyncTask只是在这个函数完成后才开始?有没有办法在之前或并行运行Asynctask?直到今天我还以为AsyncTask通常是并行的。我找到了方法

  

获得()

但这冻结了线程......我需要一个替代方案或修复

    public void my_function ()
    {
      new async_task().execute()
      ... //do something

      if (returned_value_from_async_task == 10)    //Here I need the variable which is returned in the async_task
      {
       ... //do something
      }

    } //End of function

//When I go to debug mode the AsyncTask starts right here 

1 个答案:

答案 0 :(得分:2)

是。这是AsyncTask的“异步”部分。函数末尾的代码不会等待任务完成。所以你不能依赖那些数据。您在函数中运行的代码可能花费的时间少于ThreadPoolExecutor完成任务所需的时间。

执行依赖于AsyncTask

onPostExecute的数据的代码

编辑:
如果不知道“更复杂”意味着什么,很难说你最好的选择是什么。但你可以拆分这个功能,因此

public void preExecutePrep() {
    YourTask yourTask = new YourTask();
    yourTask.execute();

    //do what you can without the result
}

private void postExecuteCode(int result) {
    if (result != 10) return;
    //do the rest
}

然后在postExecuteCode中致电onPostExecute。如果这不会削减它,我将需要更多具体信息来帮助