在android中等待异步任务

时间:2016-04-05 02:37:01

标签: java android android-asynctask wait multitasking

我是android开发的新手,我想问一下如何等待一些已经运行的异步任务。此外,当我试图睡觉主线程时,其中许多被系统暂停。当我使用arraylist添加它们然后调用它们中的每一个时get()它们中的许多都不能按时完成。请给我一个代码示例,因为我搜索了三天... 谢谢!!

for(){
  async...
  async.execute();
  arraylist.add(async);
}
...
for(arraylist.size){
    arraylist.get().get();
}

1 个答案:

答案 0 :(得分:0)

我会在这里尝试回答你的问题,但问题不明确。

如果您想检查arraylist中是否已完成AsyncTask,我们可以使用getStatus call向我们返回status,其中一个幸运的是,状态为FINISHED,因此您可以检查任何给定AsyncTask的状态。

如果你想睡觉直到其中一个AsyncTask完成,那么最好的方法可能就是在onPostExecute做一些事情。当你override it时,你可以做一些事情来通知主线程。其中一种方法是:

public interface Callback {
  public void callBack(int id);
}
public class MainActivity implements Callback {
  private void function() {
    //do your thing
    AsyncTask task0 = new MyAsyncTask(this, 0); //implement your own asynctask here, 
    //with one of the parameters this activity so that you can get a callback. 
    //Also, optionally give in the id so that you know what index of asynctask is finished first.  
    //do the same thing for other tasks
    task1.execute(params);
  }

  public void callBack(int id) {
    arrayList.get(id).get(); //this is done
  }

AsyncTask中,您只需将onPostExecute覆盖为类似

的内容即可
protected void onPostExecute (Result result) {
  //do your thing
  mainActivity.callBack(id);
}

希望这有帮助。