什么是Android UiThread(UI线程)

2024-02-23

有人可以向我解释一下 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(使用前将#替换为@)

什么是Android UiThread(UI线程) 的相关文章

随机推荐

  • Excel - 如何从一张工作表中删除不包含另一张工作表中的列输入的所有行

    我的 Excel 书中的一张工作表中有一个电子邮件地址列表 位于 M 列 工作表 1 长度为 2050 行 其他列上还有其他数据 例如名字和姓氏等 以及另一张工作表 Sheet2 A 列中有电子邮件地址列表 长 210 行 我需要保留 Sh
  • 使用 Keycloak Script Mapper 聚合声明中角色的属性

    我们有一个 Keycloak 脚本映射器来将角色的属性添加到 ID 令牌 目标是聚合角色属性中可用的值 映射器看起来像这样 Merge with concatenation for the values of attributes obta
  • pandas groupby 在具有聚合的列上[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 userId category count A cat 24 B dog 26 A cat 32 C bird 21 D lion 6 D cat 32 C bird 22 我想要的结果是
  • .def 文件 C/C++ DLL

    我不明白将 def 文件与 DLL 一起使用的意义 看起来它取代了在 DLL 代码中使用显式导出的需要 即显式 declspec dllexport 但是在不使用这些文件时我无法生成 lib 文件 这会在稍后使用 DLL 时产生链接器问题
  • 为什么python线程数一开始是2?

    import threading print threading activeCount 输出 2 当这段代码保存到文件并运行时 既然是主线程怎么可能是2呢 当我们运行 foo py 文件时 除了主线程之外 Python 是否默认运行另一个
  • 在 Scala 中,为什么模式匹配没有选取 NaN?

    我的方法如下 def myMethod myDouble Double Double myDouble match case Double NaN gt case gt IntelliJ 调试器显示 NaN 但这在我的模式匹配中没有被识别出
  • Mathematica 中的“upvalue”是什么意思以及何时使用它们?

    To me g f g x h x 只是详细地等价于f g x h x 你能举一个你必须使用的例子吗 实际上 g f g x h x 不等于f g x h x 后者将定义与f while and 和它的 将定义与g 这是一个至关重要的区别
  • 如何以及何时使用 Html 编码

    我最近了解到 我不应该将 html 编码数据存储在数据库中 但我应该对用户屏幕上显示的数据进行 html 编码 没什么大不了的 我必须修复我的数据库记录并进行一些代码更改 但我的问题是 什么时候应该使用 html 编码 什么时候不应该使用
  • Spring Batch 和 Spring Integration 的集成问题 - “没有为端点定义轮询器”异常

    我经历了Spring 集成指南 http docs spring io spring integration reference html sftp html和例子在这里 https github com spring projects s
  • PHP exec() 不适用于 ffmpeg

    我尝试在 PHP 中运行以下命令 在 Ubuntu 上
  • Entity Framework Core 2.2:禁用特定实体的迁移

    我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序 并且我将在其上添加一些表 我对数据库进行了逆向工程 将现有表作为实体添加到我的应用程序中 并且我编写了自己的实体 稍后将添加这些实体 最后 所有实体都添加到单个
  • JQuery Mobile:聚焦输入文本不尊重 z-index,出现在其他所有内容之上

    我有一个带有 jQ uery Mobile 的 Android Phonegap 应用程序 在 HTC Desire 上 如果输入框获得焦点 则无论上面有哪些元素 它始终会转到前面 您是否尝试应用CSS属性 webkit transform
  • iOS - UISlider 的自定义图像

    我想为 UISlider 轨道使用图像 我不希望拇指的左边有一种颜色 右边有另一种颜色 我只想要一张横跨整个赛道的静态图像 可能的 要将图像设置到滑块 您可以使用设置最小轨迹图像 设置最大轨迹图像方法 根据您的要求 将两者设置为同一图像 i
  • 适用于打字稿的编辑器和调试器

    我正在开发一个nodejs 项目 其中所有代码都是用打字稿编写的 它遵循微服务模式 每个微服务都是一个独立的项目 因此需要同时打开和调试许多项目 我尝试了 webstorm 和 Visual Studio 使用 NTVS 但对它们都不满意
  • PYQT5画线[重复]

    这个问题在这里已经有答案了 def init self super init self title Main menu self left 80 self top 80 self width 1500 self height 1000 se
  • Oracle XML:跳过不存在的节点

    我在将 xml 数据插入到 oracle 表中时遇到问题 这是我的 xml
  • 简单的 Kafka Consumer 未收到消息

    我是 Kafka 的新手 正在运行一个简单的 Kafka 消费者 生产者示例 如上所示Kafka消费者 https kafka apache org 0102 javadoc index html org apache kafka clie
  • 生成随机确定性有限自动机的算法是什么?

    DFA 必须具有以下四个属性 DFA 有 N 个节点 每个节点有 2 个传出转换 每个节点都可以从其他每个节点访问 从所有可能性中以完全一致的随机性选择 DFA 这是我到目前为止所拥有的 从 N 个节点的集合开始 选择一个尚未选择的节点 将
  • 使用委托和 Lambda 的奇怪行为

    作为在我正在开发的库中引入惰性格式化评估的一种方法 我定义了委托 public delegate string MessageFormatterDelegate string message params object arguments
  • 什么是Android UiThread(UI线程)

    有人可以向我解释一下 UI 线程到底是什么吗 在developer android com上它提到了runOnUiThread函数 公共最终无效runOnUiThread 可运行操作 从以下版本开始 API 级别 1 在 UI 线程上运行指