我正在UI线程中执行一些任务,并创建了一个工作线程,为我做网络工作。但是,一旦工作线程完成,我需要执行一些重要的事情。有人可以建议我一个解决方案吗?
{
Main thread...
worker thread created..and executed..
//I need to wait here for the worker thread to finish//
some useful task to be done
}
提前致谢!
答案 0 :(得分:3)
你需要在工作完成后在UI线程上做一些事情吗?在工作人员结束时使用runOnUiThread
或使用AsyncTask
onPostExecute()
。在工作人员运行时阻止UI线程没有任何意义。
答案 1 :(得分:0)
你没有。阻止UI线程违反了Android中线程的关键规则。 这样做会导致那些恼人的“应用程序无响应”对话框以及其他问题。
从开发者文档的Processes and Threads页面:
因此,您不能从工作线程操纵UI - 您必须从UI线程对您的用户界面进行所有操作。因此,Android的单线程模型只有两个规则:
不要阻止UI线程
不要从UI线程外部访问Android UI工具包
您应该探索需要完成的其他解决方案。您无需详细说明您的问题,但ekholm的解决方案可以正常工作,就像从工作线程调用Activity中的方法一样。