Android 1.5:调用get()方法时未调用Asynctask doInBackground()

Android 1.5:调用get()方法时未调用Asynctask doInBackground(),android,android-asynctask,Android,Android Asynctask,我在执行异步任务的方式上遇到了问题。以下是问题代码: firstTask = new background().new FirstTask(context); if (firstTask.execute().get().toString().equals("1")) { secondTask = new background().new SecondTask(context); } 我在这里做的是创建一个新的asynctask对象,将其分配给firstTask,然后执行它。然后,我想在

我在执行异步任务的方式上遇到了问题。以下是问题代码:

firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
    secondTask = new background().new SecondTask(context);
}
我在这里做的是创建一个新的asynctask对象,将其分配给firstTask,然后执行它。然后,我想在第一个任务完成时启动一个单独的异步任务,并确保它返回一个成功值(在本例中为1)。 这在Android 2.0及更高版本上非常有效。然而,我正在用安卓1.5进行测试,问题开始出现。上面的代码将运行第一个asynctask,但尽管调用了onPreExecute(),但从未调用doInBackground()。如果要在不使用get()方法的情况下执行第一个任务,则会调用doInBackground(),并且一切正常。除了现在,我没有办法确定第一个任务是否成功完成,以便告诉第二个任务执行。 假设这是安卓1.5上asynctask的一个bug,安全吗?尤其是因为API()说get方法是从API 3开始实现的。 有办法解决这个问题吗?或者用另一种方法来确定第一个任务是否已完成?

如果要阻止(通过
get()
),首先为什么要处理
AsyncTask
AsyncTask
的整个要点是不阻塞


如果您想让
SecondTask
FirstTask
完成时执行
SecondTask
,请让
FirstTask
FirstTask
onPostExecute()

公共软件中执行
SecondTask
,您可以看到,firstTask是登录任务,secondTask是登录后从网站下载特定数据的各种任务之一。我宁愿有一个主任务来控制正在运行的任务并知道何时开始新任务,而不是通过登录任务传递参数来确定完成时要执行的任务。因此,我正在寻找一种方法来判断任务何时完成。此外,这不在UI线程上,因此这些线程不会减慢UI的速度。您可以通过对该任务调用
onPostExecute()
来判断任务何时完成。让每个任务告诉协调器“哟!我完成了!”,这样协调器就可以在状态机下移动下一步。当从非主线程的另一个线程调用任务时,需要
get()
。一个很好的例子是插装测试,插装线程必须经常等待
AsyncTask
完成才能继续测试。