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

时间:2010-03-23 19:13:12

标签: android android-asynctask

我遇到了执行asynctasks的问题。这是问题代码:

firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
    secondTask = new background().new SecondTask(context);
}

我在这里做的是创建一个新的asynctask对象,将其分配给firstTask然后执行它。然后我想在第一个完成后启动一个单独的asynctask,并确保它返回一个成功值(在这种情况下为1)。 这适用于Android 2.0及更高版本。但是,我正在测试Android 1.5并且问题开始出现。上面的代码将运行第一个asynctask,但是尽管调用onPreExecute(),doInBackground()永远不会被调用。如果我在没有get()方法的情况下执行第一个任务,则调用doInBackground()并且一切都按预期工作。除了现在我没有办法确定第一个任务是否成功完成,以便我可以告诉第二个任务执行。 是否可以安全地假设这是Android 1.5上的asynctask的错误?特别是因为API(https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29)表示自API 3以来已经实现了get方法。 有没有什么办法解决这一问题?或者另一种确定第一项任务已完成的方法?

1 个答案:

答案 0 :(得分:0)

如果您要阻止(通过get()),为什么首先要打扰AsyncTaskAsyncTask的整个不会阻止。

如果您想在SecondTask完成后FirstTask执行,请FirstTask SecondTask FirstTask执行onPostExecute()。< / p>