1

异步任务可以定期向 GUI发送结果吗?

例如:我有 3 件我想让我的异步任务去做的事情。在每件事之后,我想将一个字符串发送回 gui:"task x completed"

我可以在不创建 3 个异步任务的情况下执行此操作吗?

4

3 回答 3

1

用于onProgressUpdate()在 UI 中生成显示。

boolean first = false, second = false, third = false; // task not completed yet


doInBackground()
{
// complete your task and set the corresponding boolean to **true**
}

onProgressUpdate(..)
{
if(first== true) Toast.makeText(context, "Task 1 finished", Toast.LENGTH_LONG).show();
//similarly check which task has been done
}

编辑:您还可以查看另一种称为publishProgress().

于 2012-08-30T18:08:24.363 回答
1

是的。查看 onProgressUpdate() 和 publishProgress() 方法。

这是我很快找到的一个例子,它可能有效,也可能无效。但我认为你有足够的信息来自己弄清楚。

从 AsyncTask 更新 Activity 中的进度对话框

于 2012-08-30T18:08:42.160 回答
0

除了其他建议:如果您可以从您的 asycntask 访问活动,那么您也可以使用Activity.runOnUiThread(Runnable action). 另一个选项 - 如果您可以访问屏幕上添加的任何视图,那么您还可以通过View.post(Runnable action). 这些可以安全地从doInBackground().

于 2012-08-30T18:27:15.683 回答