我想在完成第一个任务后执行asynctask。但是当打印第一个任务的状态时,它总是显示RUNNING。如果并行执行两个任务,则只执行较小的任务。我正在运行oncreate方法。任何想法?
这是我的代码示例
public class test extends Activity
{
ExecuteTask1 task1;
ExecuteTask2 task2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
task1 = new ExecuteTask1();
task1.execute(token);
System.out.println(task1.getStatus());
if(task1.getStatus() ==AsyncTask.Status.FINISHED)
{
task2 = new ExecuteTask2();
task2.execute(token);
}
}
}
答案 0 :(得分:4)
现在在您的代码中,您没有给task1时间完成。从task1的onPostExecute
方法启动task2。 (您必须修改ExecuteTask1类中的代码才能使其生效。)
或者,让task1在onPostExecute
中回复您的活动(或向其发送消息),以便您的活动可以启动任务2。
答案 1 :(得分:1)
这是因为您在启动后立即获得task1
状态 - 您需要使用handler或其他方式从第一个onPostExecute()
调用第二个AsyncTask。
答案 2 :(得分:0)
AsyncTask get方法正在阻塞。
然后,您还可以撰写task1.get()
,然后task2.execute()
。这样,您可以在AsyncTask实现中删除task1与task2的依赖关系