有人可以向我解释一下 UI 线程到底是什么吗?
在developer.android.com上它提到了runOnUiThread函数
公共最终无效runOnUiThread(可运行操作)
从以下版本开始:API 级别 1 在 UI 线程上运行指定的操作。如果
当前线程是UI线程,然后执行action
立即地。如果当前线程不是 UI 线程,则操作为
发布到 UI 线程的事件队列。
UI 线程是否意味着每次活动被某些 ui 活动(如来电或屏幕变暗等)推到后台时都会运行?如果不是,UI 线程到底包含什么?
谢谢
UIThread 是应用程序的主执行线程。这是大部分应用程序代码运行的地方。所有应用程序组件(Activities、Services、ContentProviders、BroadcastReceivers)都是在此线程中创建的,并且对这些组件的任何系统调用都在此线程中执行。
例如,假设您的应用程序是单个 Activity 类。然后,所有生命周期方法和大部分事件处理代码都在此 UIThread 中运行。这些是类似的方法onCreate
, onPause
, onDestroy
, onClick
等等。此外,这是对 UI 进行所有更新的地方。任何导致 UI 更新或更改的事情都必须在 UI 线程上发生。
有关应用程序进程和线程的更多信息,请单击此处。 http://developer.android.com/guide/components/processes-and-threads.html
当您显式生成一个新线程在后台工作时,此代码不会在 UIThread 上运行。那么如果这个后台线程需要做一些改变 UI 的事情会发生什么呢?这就是runOnUiThread
是为了.实际上,您应该使用处理程序(有关更多信息,请参阅下面的链接)。它为这些后台线程提供了执行可修改 UI 的代码的能力。他们通过将 UI 修改代码放入 Runnable 对象并将其传递给 runOnUiThread 方法来实现此目的。
有关生成工作线程并从中更新 UI 的更多信息,请单击此处 http://developer.android.com/guide/components/processes-and-threads.html#WorkerThreads
我个人只使用runOnUiThread
我的仪器测试中的方法。由于测试代码不在UIThread中执行,因此您需要使用此方法来运行修改UI的代码。因此,我使用它将点击和按键事件注入到我的应用程序中。然后我可以检查应用程序的状态以确保发生了正确的事情。
有关在 UIThread 上测试和运行代码的更多信息,请单击此处 http://developer.android.com/tools/testing/activity_testing.html#RunOnUIThread
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)