gpt4 book ai didi

android - 什么是Android UiThread(UI线程)

转载 作者:IT老高 更新时间:2023-10-28 13:10:51 27 4
gpt4 key购买 nike

有人可以向我解释一下 UI 线程到底是什么吗?在 developer.android.com 上,它提到了 runOnUiThread 函数

public final void runOnUiThread (Runnable action)

Since: API Level 1 Runs the specified action on the UI thread. If the current thread is the UI thread, then the action is executed immediately. If the current thread is not the UI thread, the action is posted to the event queue of the UI thread.

UI 线程是否意味着每次 Activity 被某些 ui Activity (如来电或屏幕变暗等)推送到后台时都会运行此线程?如果不是,那么 UI 线程究竟包括什么?

谢谢

最佳答案

UIThread 是应用程序执行的主线程。这是运行大多数应用程序代码的地方。您的所有应用程序组件(Activity、Services、ContentProviders、BroadcastReceivers)都在此线程中创建,对这些组件的任何系统调用都在此线程中执行。

例如,假设您的应用程序是单个 Activity 类。然后所有生命周期方法和大部分事件处理代码都在这个 UIThread 中运行。这些是 onCreateonPauseonDestroyonClick 等方法。此外,这是所有对 UI 进行了更新。任何导致 UI 更新或更改的事情都必须在 UI 线程上发生。

For more info on your application's Processes and Threads click here.

当您显式生成一个新线程以在后台执行工作时,此代码不会在 UIThread 上运行。那么如果这个后台线程需要做一些改变 UI 的事情会发生什么呢?这就是 runOnUiThread 的用途。实际上,您应该使用 Handler(有关此内容的更多信息,请参见下面的链接)。它为这些后台线程提供了执行可以修改 UI 的代码的能力。他们通过将 UI 修改代码放入 Runnable 对象并将其传递给 runOnUiThread 方法来做到这一点。

For more info on spawning worker threads and updating the UI from them click here

我个人只在我的 Instrumentation 测试中使用 runOnUiThread 方法。由于测试代码不在 UIThread 中执行,因此需要使用该方法运行修改 UI 的代码。因此,我使用它将点击和按键事件注入(inject)我的应用程序。然后我可以检查应用程序的状态以确保发生了正确的事情。

For more info on testing and running code on the UIThread click here

关于android - 什么是Android UiThread(UI线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com