我有两个asynctasks,我希望他们单击按钮时单独运行。我的意思是当点击按钮时,第二个按钮不会启动,直到第一个按钮完成。 顺便说一句,我试图使用:
if(task1.getStatus()==AsyncTask.Status.FINISHED){
task2.excecute();
}
但它不起作用......
请帮忙吗?
答案 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框架来解决您的问题