我遇到了执行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方法。 有没有什么办法解决这一问题?或者另一种确定第一项任务已完成的方法?
答案 0 :(得分:0)
如果您要阻止(通过get()
),为什么首先要打扰AsyncTask
? AsyncTask
的整个点不会阻止。
如果您想在SecondTask
完成后FirstTask
执行,请FirstTask
SecondTask
FirstTask
执行onPostExecute()
。< / p>