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