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三者之间的关系是什么? 的相关文章

  • Android N 通过代码安装apk

    我正在尝试在 android N 上安装 APK if Build VERSION SDK INT gt Build VERSION CODES N File apkFile new File Environment getExternal
  • 两个 ListView 和 ScrollView

    我离这里很近 我已经尝试了很多东西 但无法让它发挥作用 我这里有两个列表视图 我想要的是每个列表视图显示其全部内容 我不希望列表视图可滚动 我想要保持列表视图可滚动的滚动视图 我能得到的最接近的结果 这是错误的 是每个列表视图都是可滚动的
  • Android 键盘调整大小

    我正在开发一个应用程序 其中包含 Activity 和Fragment 在片段布局中 我使用相对布局作为父布局 底部和滚动视图之间的一个按钮 Scrollview包含编辑文本框 如果我点击最后一个editTextBox在滚动视图中我的键盘隐
  • Android:使用 ActivityResultLauncher 时如何区分多个意图

    我正在创建一个意图选择器来在手机相机应用程序和图库 文件管理器之间进行选择 Intent chooserIntent Intent createChooser clickPhoto Set Image Using chooserIntent
  • 使用 notificationManager.getActiveNotifications() 获取状态栏通知

    我正在使用以下方式获取所有状态栏通知notificationManager getActiveNotifications 但它只是返回应用程序锁定的通知 每当在什么应用程序或任何其他应用程序中发生通知时 此功能不会向我提供其他应用程序的主动
  • Android MediaPlayer - setDataSource 和 Release - IllegalStateException

    我编写了自己的 MediaPlayer 类来播放特定路径下的文件以及播放 asset 文件夹中的文件 这是课程 public class CMediaPlayer extends MediaPlayer public void play S
  • 如何动态设置每个 Gridview 图像项的边框

    我想显示每个 gridview 项目的不同边框 我如何动态地为每个项目设置边框
  • 在 Android 中以高音量录制

    我正在使用 MediaRecorder 进行音频录制 但不幸的是 当我播放录制的音频时 我的媒体音量非常低 我什么也没听到 几乎什么也没听到 有没有办法提高录音音量 就像我们录音时的 setVolume 一样 我尝试在 MediaRecor
  • 将 Cordova console.log 写入文件

    有谁知道是否有可能console log写入文件或类似的东西 我已经记录了我的应用程序 但它仅写在控制台上 出于远程目的debugging我也需要将现有日志写入文件 我想创建一个文件并将日志写入该文件中 但这将使我复制现有的日志代码 因此
  • 如何在Android中绘制钟形曲线?

    我正在尝试在 Android 中绘制钟形曲线 正态分布 我使用这个方程 自己增加x轴并获得相对于x轴的y轴坐标 for int i 0 i lt 1000 i x float i 0 5 yy float 1 Math sqrt 0 5 M
  • 如何停止和重新启动 Android 仪器测试中的活动?

    我正在尝试编写一个停止的 Android 活动仪器测试 onPause then onStop 并重新启动当前活动 我试过 activity finish activity getActivity 但这似乎不能正常工作 测试的目的是断言表单
  • Android 上的推送通知:IBM MQTT

    我对 Android 环境非常陌生 必须使用上给出的 wmqtt jar 示例应用程序来设置客户端http www 01 ibm com support docview wss http www 01 ibm com support doc
  • 在android中使用smack 4.1获取在线用户(名册条目)

    我一直在尝试使用 android 中的 smack 4 1 beta 2 获取名册条目 https github com igniterealtime Smack wiki Smack 4 1 Readme and UpgradeGuide
  • 如何在运行时将元数据信息写入Android Manifest

    我知道可以编辑 Android 清单组件 例如 将其设置为启用 禁用等 我想在运行时将元值标签插入到 Android 清单的应用程序标签中 我怎样才能直接写入android清单 这是我想直接写入我的应用程序的 Android 清单中的字符串
  • 我用 java 7 android studio 替换 java 8 错误?

    为什么我用 JAVA 7 替换 JAVA 8 Android studio 错误 gt Error Error converting bytecode to dex Cause Dex cannot parse version 52 byt
  • Camera中添加Camera的Zoom控件

    我正在制作一个相机应用程序 其中我使用 Surface View 作为相机和所有其他东西 我从以下链接中获取了指南 http www brighthub com mobile google android articles 43414 as
  • Handler.removeCallbacksAndMessages(null) 和主循环

    在片段的 onDestory 中 我放置了代码来清理我开始使用 Handler postDelayed 的所有挂起的可运行对象 mUiHandler removeCallbacksAndMessages null 我在这里有一个问题 调用
  • 为什么Android模拟器这么慢?我们怎样才能加快Android模拟器的速度呢?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我有一个2 67GHz 赛扬处理器 以及1 21GB RAM 上x86视窗XP专业机器 我的理解是安卓模拟器在这样的机器上应该
  • 如何从停止的地方开始播放视频

    我正在使用 VideoView 来播放视频 如果我退出应用程序 在返回应用程序 即在 onResume 中 时 它应该从停止的位置播放视频 要获取当前进度 在 onPause 中检查 long progress mVideoView get
  • 在 Android 上使用 pocketsphinx 未检测到关键字

    谁能解释一下如何使用 pocketsphinx 将语音转换为文本 我试试这个 import com example speechtutor SpeechRecognizerRecorder import com example speech

随机推荐

  • 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