我需要运行两个任务,以便第二个任务依赖于第一个任务的操作。第一个任务就像下载文件,第二个任务对下载的文件执行某些操作。为此,我创建了两个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吗?
答案 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