我遇到了一个问题,我的asynctasks的执行方式。这里的问题代码:

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

我在这里做的是创建一个新的AsyncTask对象,将其分配给firstTask,然后什么执行它。那么我想,当第一个完成,并确保它(在这种情况下,1)成功返回值来火了一个单独的AsyncTask。 这工作完全在Android 2.0及以上。然而,我与Android 1.5测试和问题开始雨后春笋般冒出来。上面的代码将运行第一的AsyncTask但doInBackground()是从来没有,尽管onPreExecute称为()被调用。如果我没有get()方法来执行第一个任务,doInBackground()被调用,一切都按预期工作。只是现在我没有办法确定第一任务成功完成,这样我可以告诉第二个任务来执行。 它是安全的假设,这是在Android 1.5用的AsyncTask的错误吗?特别是由于API( https://developer.android .COM /参考/安卓/ OS / AsyncTask.html#GET%28%29 )说,get方法一直以来API 3实现。 有没有什么办法解决这一问题?或者另一种方式来确定第一任务已经完成?

有帮助吗?

解决方案

如果你要阻止(通过get()),你为什么用AsyncTask困扰摆在首位? AsyncTask的整个的是不阻塞。

如果你想有当SecondTask完成FirstTask执行,有FirstTaskSecondTaskFirstTask执行onPostExecute()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top