3

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

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 及更高版本上完美运行。但是,我正在使用 Android 1.5 进行测试,并且开始出现问题。上面的代码将运行第一个异步任务,但 doInBackground() 从未被调用,尽管 onPreExecute() 被调用。如果我要在没有 get() 方法的情况下执行第一个任务,则调用 doInBackground() 并且一切都按预期工作。除了现在我没有办法确定第一个任务是否成功完成,以便我可以告诉第二个任务执行。假设这是 Android 1.5 上的 asynctask 错误是否安全?特别是因为 API (https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29)说get方法从API 3开始就已经实现了。有没有办法解决这个问题?或者另一种方法来确定第一个任务已经完成?

4

1 回答 1

0

如果您要阻止(通过get()),您首先为什么要打扰AsyncTask?整AsyncTask不阻塞。

如果您想在完成SecondTask时执行,请在's中执行。FirstTaskFirstTaskSecondTaskFirstTaskonPostExecute()

于 2010-03-23T20:17:35.427 回答