UIThread是应用程序执行的主要线程。这是运行大多数应用程序代码的地方。您的所有应用程序组件(活动、服务、内容提供程序、BroadCastReceivers)都是在这个线程中创建的,对这些组件的任何系统调用都是在这个线程中执行的。
例如,假设您的应用程序是一个活动类。然后,所有的生命周期方法和大多数事件处理代码都在这个UIThread中运行。这些方法如下onCreate
, onPause
, onDestroy
, onClick
此外,这也是对UI进行所有更新的地方。任何导致UI被更新或更改的事情都必须发生在UI线程上。
有关应用程序进程和线程的更多信息,请单击此处。
当您显式生成一个新线程以在后台工作时,这段代码不会在UIThread上运行。那么,如果这个后台线程需要做一些改变UI的事情,会发生什么呢?这就是runOnUiThread
是为了。实际上,您应该使用Handler(有关此问题的更多信息,请参见下面的链接)。它为这些后台线程提供了执行可以修改UI的代码的能力。他们通过将UI修改代码放入一个Runnable对象并将其传递给runOnUiThread方法来做到这一点。
有关生成工作线程和更新用户界面的更多信息,请单击此处
我个人只使用runOnUiThread
方法在我的仪器测试中。由于测试代码没有在UIThread中执行,所以需要使用此方法来运行修改UI的代码。因此,我使用它将单击和键事件注入到我的应用程序中。然后,我可以检查应用程序的状态,以确保发生了正确的事情。
有关UIThread测试和运行代码的更多信息,请单击此处