可以异步任务周期性发送结果到GUI?异步任务发送结果到GUI
例如:我有3件事情,我想我的异步任务来完成。在每件事情之后,我想 发送一个字符串回到gui:"task x completed"
我可以在不创建3个异步任务的情况下执行此操作吗?
可以异步任务周期性发送结果到GUI?异步任务发送结果到GUI
例如:我有3件事情,我想我的异步任务来完成。在每件事情之后,我想 发送一个字符串回到gui:"task x completed"
我可以在不创建3个异步任务的情况下执行此操作吗?
是的。查看onProgressUpdate()和publishProgress()方法。
下面是一个例子,我发现非常快,这可能会或可能无法正常工作。但我认为你有足够的信息为你自己弄清楚。
使用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()
另一种方法。
除了其他建议:如果你从你的asycntask访问活动,那么你也可以使用Activity.runOnUiThread(Runnable action)
。还有一个选择 - 如果您有权访问屏幕上添加的任何视图,那么您还可以通过View.post(Runnable action)
将其用于安全的UI更新。这些从doInBackground()
可以拨打。
感谢,对我一直在寻找 – PoeHaH
如果你喜欢我的回答,请记得选择它作为一个公认的答案!它不仅会帮助我,但人们会看到你接受了很多问题,并且更愿意帮助你。 – Michael
首先在选择最佳答案之前尝试一下;) – PoeHaH