Android中Looper、Handler、MessageQueue三者之间的关系是什么?

2023-12-11

我已经检查了官方 Android 文档/指南Looper, Handler and MessageQueue。但我无法得到它。我是 Android 新手,对这些概念非常困惑。


A Looper是一个消息处理循环:它读取并处理来自MessageQueue. The Looperclass 通常与 a 结合使用HandlerThread(的子类Thread).

A Handler是一个实用程序类,有助于与Looper——主要通过发布消息和Runnable线程的对象MessageQueue。当一个Handler创建后,它绑定到特定的Looper(以及关联的线程和消息队列)。

在典型用法中,您创建并启动一个HandlerThread,然后创建一个Handler其他线程可以通过该对象(或多个对象)与HandlerThread实例。这Handler必须在运行时创建HandlerThread,尽管一旦创建,就没有限制哪些线程可以使用Handler的调度方法(post(Runnable), etc.)

Android 应用程序中的主线程(也称为 UI 线程)在创建应用程序实例之前设置为处理程序线程。

除了课程文档之外,还有关于所有这些的精彩讨论here.

附:上面提到的所有类都在包中android.os.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android中Looper、Handler、MessageQueue三者之间的关系是什么? 的相关文章

随机推荐

  • Balanced_accuracy 不是 scikit-learn 中的有效评分值

    与这篇文章超级相似 ValueError balanced accuracy 不是 scikit learn 中的有效评分值 我在用 scoring precision macro recall macro balanced accurac
  • Android:自定义相机拍摄的图像太暗

    在我的应用程序中 我必须拍摄自定义活动的照片 我实现了所有功能并且可以保存我的照片 但在某些设备中它们太暗了 我有这段代码 但它对我没有帮助 Parameters params mCamera getParameters if params
  • Clock() - C 函数的执行时间

    我正在尝试测量 C 代码块的执行时间 我的代码中有类似这样的内容 clock t begin end double time spent begin clock ATL dsymv 122 n alfa A n X 1 beta Y 1 e
  • 在 powershell 中聚焦 IE 窗口

    My code ie new object com InternetExplorer Application ie navigate http localhost ie visible true ie fullscreen true 但是全
  • 如何在 RMI 方法的参数中传递对象?

    我正在尝试在 RMI 方法中添加参数 当我添加例如String一切正常 但我不确定是否可以传递我创建的对象 我是 RMI 新手 所以我的代码非常简单 HelloIF public interface HelloIF extends Remo
  • 尝试使用 JavaScript 从 azure 获取访问令牌时无法加载响应数据

    我想为我在 azure 上注册的应用程序获取访问令牌 为此 我编写了一段代码来访问其余 API 这是我的代码
  • 数据透视表字段显示除空白之外的所有内容

    我需要在刷新后更新数据透视过滤器以选择除blank 这里的其他答案利用 ShowAllItems方法对我不起作用 因为它也会显示没有数据的项目 下面的枢轴选项Display 我尝试使用在另一个问题上找到的另一个解决方案 PivotItems
  • 通过自定义协议符合 MKAnnotation 协议

    我想轻松地在地图上获取 2 个或更多不同的对象类型 Swift 2 0 我想使用协议 我创建了一个这些对象也需要遵守的协议 我假设现在任何符合 PinProtocol 的项目本质上与 MKAnnotation 相同 只是更多 protoco
  • Android Google Play / Drive Api

    您好 我正在使用 Google Drive Api 通过 AppDataFolder 工具来存储数据库 我有一个测试应用程序在一台设备上成功运行 我能够上传 更新 删除 下载数据库文件并将其重新集成到程序中 没有任何问题 我遇到的问题是 当
  • 正则表达式在javascript中匹配反向组

    我想匹配的字符串don t have abc def or ghi 相反的情况很简单 abc def ghi 我该如何扭转这种情况 我不想 abc def ghi 因为那里会有更多的 逻辑 如果这就是它的作用的话 如何逆转整场小组赛 或无论
  • 为什么我的闰年算法不起作用(Java)? [复制]

    这个问题在这里已经有答案了 这是我所拥有的 Scanner input new Scanner System in System out print Enter a year int Year input nextInt System ou
  • 从sql server中的表中分割逗号分隔值

    我有一个SQL table其中有多少条记录 我想知道其中有多少个名字以及一个名字在其中出现的时间 表名Mst Name john smith alax rock smith alax sira john rock rock sira 我想知
  • C#:使用单独的线程填充 UI

    我试图从我收到的申请中找出一些意义 以便追踪错误的根源 有一些代码 此处进行了简化 创建了四个线程 这些线程依次填充主窗体上的列表视图 每个方法从数据库获取数据并从资源 dll 检索图形 以便直接填充图像列表和列表视图 从我在这里读到的内容
  • Ubuntu 上的 R BayesVarSel 安装

    我正在尝试安装BayesVarSel封装在一个ubuntu12盒上AWS EC2 它在我的 Windows 7 机器上运行良好 R 2 15 1 I ve attached a screenshot of the error message
  • 适用于 Objective C 的 Android NDK

    我想使用 Android NDK 访问 Objective C 代码 可以吗 有没有办法访问现有的 Objective C 代码 现在 是的 UPDATE 可分配已死 Try 可适配的SDK or 水晶SDK 两者都是基于Android N
  • Bootstrap 3 中的堆叠选项卡

    我正在尝试使用 Bootstrap 3 中的 Tab jquery 插件实现左对齐堆叠选项卡 其中选项卡垂直呈现在选项卡内容的左侧 而不是顶部 当我尝试以下操作时 ul class nav nav tabs nav stacked li a
  • Java中如何从HTML文件中获取值?

    我需要从 HTML 文件中获取一个值 下面示例中的 abc 如下所示
  • 查找元素中未包含在 html 标签中的文本并将其用

    括起来

    div class menu content h3 Lorem Ipsum h3 TEXT THAT NEEDS TO BE WRAPPED ul li List Item 1 li ul div 我得到了上面的代码 它是自动生成的 所以我
  • ReaderWriterLockSlim 是正确的选择吗?

    我正在为 Windows Azure 中运行的应用程序编写一个全局错误处理程序 记录器 当应用程序中发生错误时 将执行许多需要原子发生的操作 我需要防止在前一个错误完成之前记录错误 同时 我希望根据需要读取日志 我最初的想法是使用监视器 锁
  • Android中Looper、Handler、MessageQueue三者之间的关系是什么?

    我已经检查了官方 Android 文档 指南Looper Handler and MessageQueue 但我无法得到它 我是 Android 新手 对这些概念非常困惑 A Looper是一个消息处理循环 它读取并处理来自MessageQ