2012-08-30 89 views
1

可以异步任务周期性发送结果到GUI?异步任务发送结果到GUI

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

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

回答

1

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

下面是一个例子,我发现非常快,这可能会或可能无法正常工作。但我认为你有足够的信息为你自己弄清楚。

Updating progress dialog in Activity from AsyncTask

+0

感谢,对我一直在寻找 – PoeHaH

+1

如果你喜欢我的回答,请记得选择它作为一个公认的答案!它不仅会帮助我,但人们会看到你接受了很多问题,并且更愿意帮助你。 – Michael

+1

首先在选择最佳答案之前尝试一下;) – PoeHaH

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()另一种方法。

0

除了其他建议:如果你从你的asycntask访问活动,那么你也可以使用Activity.runOnUiThread(Runnable action)。还有一个选择 - 如果您有权访问屏幕上添加的任何视图,那么您还可以通过View.post(Runnable action)将其用于安全的UI更新。这些从doInBackground()可以拨打。