寻找在Android中运行两个(依赖)任务的好方法

时间:2011-12-26 08:20:17

标签: android android-asynctask

我需要运行两个任务,以便第二个任务依赖于第一个任务的操作。第一个任务就像下载文件,第二个任务对下载的文件执行某些操作。为此,我创建了两个AsyncTasks A和B.

我有一个选择就是合并这两个任务,只有一个AsyncTask而不是两个。

但如果我不想合并这两项任务,我正在搞清楚我的选择。

我不能做的是调用一个任务,然后直接调用我的活动中的另一个任务,原因很明显(因为代码将在AsyncTask 1结束之前调用AsyncTask 2,然后在后台运行)。

另一种选择是调用AsyncTask A,然后在AsyncTask A的onPostExecute方法中调用AsyncTask B,这样只有在A的​​doInBackground部分结束后B才会运行。所以,这基本上是从另一个任务中调用任务。

还有其他更好的方法吗?

当AsyncTask A结束(没有阻塞UI线程)时,我可以通过哪种方式知道我的调用活动,以便在知道AsyncTask A完成后我可以调用AsyncTask B吗?

1 个答案:

答案 0 :(得分:-1)

当然!

同时启动AsyncTask

A.execute();
B.execute(A); // give B a reference to A

在B.onBackground中:

while(A.getState() != AsyncTask.Status.FINISHED){
 try{
  Thread.sleep(500);
 }catch(InterruptedException e){
  e.printStackTrace();
 }
}

// Your actual code here. This code section will only be reached if A was finished