如何一个接一个地运行两个异步任务?

时间:2016-05-14 17:59:20

标签: java android android-asynctask

我有两个asynctasks,我希望他们单击​​按钮时单独运行。我的意思是当点击按钮时,第二个按钮不会启动,直到第一个按钮完成。 顺便说一句,我试图使用:

if(task1.getStatus()==AsyncTask.Status.FINISHED){
task2.excecute();
}

但它不起作用......

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

由于HONEYCOMB,当使用execute()时,"任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误。"因此,默认情况下,AsyncTasks应该一个接一个地运行。

http://developer.android.com/reference/android/os/AsyncTask.html

您如何确认情况并非如此?

答案 1 :(得分:0)

if语句不会等到条件满了。它只是评估条件,如果是,它执行if块中的语句,否则线程继续if块之后的语句。实际上你必须等待这个条件。

最简单的方法是实现一个等待循环:

while ( task1.getStatus()!=AsyncTask.Status.FINISHED )
{
    Thread.sleep( 10 );
}
task2.execute();

但这种方法的主要缺点是实际线程阻塞。考虑使用java 6引入的Future框架来解决您的问题