我正在 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
}
提前致谢!
我正在 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
}
提前致谢!
工作人员完成后,您需要在 UI 线程上执行操作吗?runOnUiThread
在您的工作人员结束时使用或AsyncTask
与onPostExecute()
. 在 worker 运行时阻塞 UI 线程没有任何意义。
你没有。阻塞 UI 线程违反了 Android 线程的关键规则。这样做会导致那些烦人的“应用程序没有响应”对话框以及其他问题。
从开发人员文档的进程和线程页面:
因此,您不能从工作线程操作您的 UI — 您必须从 UI 线程对您的用户界面进行所有操作。因此,Android 的单线程模型只有两条规则:
不要阻塞 UI 线程
不要从 UI 线程外部访问 Android UI 工具包
您应该探索您需要完成的其他解决方案。您无需详细说明您的问题,但 ekholm 的解决方案可以工作,就像简单地从工作线程调用 Activity 中的方法一样。