Android菜鸟日记9 Handler队列

Android菜鸟日记9
Handler队列

Handler
1. 作用:消息队列 线程队列
2. 重点:
Handler调用Runnable实际是并不是开新线程 而是放入自己的线程中。
如果要开启线程 需要使用handlerThread获得looper对象并绑定到handler对象上。
3. 使用:
线程队列
1. 先创建一个handler对象
2. 将要执行的动作写入线程的run中。(handler线程队列放入的是线程(Runnable|thread))
3. 调用handler的post方法把将要执行的线程对象加添进线程队列。
EX:如果想线程不断执行的话可以自run方法中加入handler.post/postDelayed调用当前的runnable,实现递归(也就是执行的方法体中 直接会间接的重新调用自己的方法实现不断的循环执行此方法)。

消息队列
1. 通过给new handler 覆写
public void handleMessage(Message msg)
{
……
}
来实现接受message信息
2. 通过handler对象.obtainMessage来获得Mesaage对象
Message msg=updateHandler.obtainMessage();
3. 通过handler对象.sendMessage(Message msg)来发送message到消息队列
handler对象.sendMessage(msg)
然后将message加入到消息队列(先进先出)被handleMessage接收。
PS:创建handler时 复写handleMessage 方法(匿名内部类|继承handler的类 复写handleMessage)
4. 如果要实现递归则吧发送放入线程然后每次就收到message都将线程再放入线程队列。(可用于实现进度条ProgressBar变化)

4. handler 与 handlerThread
说明:
1.因为handler post入Runnable对象其实是没用创建新的线程的。所以android提供了handlerThread来弥补。
2.hanlderThread可以提供looper对象。Looper对象是用来循环处理消息队列的。
3.hanlderThread需要Start来开启。
4.开启后获取looper对象(必须start后获取looper否则会为空) 并把handler绑定到looper 对象上(通过handler有参构造),
Looper就会按照handler的handleMessage处理消息队列了。
5.这样handler就在looper的所在的线程中执行了。

5.在handler中使用message
通过 handler对象 . obtainMessage()方法获得message 对象。
发送message对象时有两种:
1.handler对象.sendMessage(msg); //发送给handler对象
2.msg对象. sendToTarget(); //发送给创建msg的对象

6.Message携带数据
Msg.arg1; 只能携带int。
Msg.obj; 携带obj对象。
Msg.setDate(Bundle x)携带Bundle对象。

7.Bundle 束
Bundle对象类似于HashMap
不同的是HashMap的键是任意的。
而bundle的键必须是stiring
放入数据
Bundle temp=new Bundle();
temp.putString("name", "wenxiu");
temp.putInt("age", 19);
读取数据
Bundle temp_h=msg.getData();
String name=temp_h.getString("name")
Int i=temp_h.getInt("age")


2011-8-14
poolo
Handler机制(一)——Handler运行流程分析 Handler运行机制 阅读详情

相关推荐

Android_Handler的线程队列Demo

博客http://blog.youkuaiyun.com/two_water/article/details/49945525里面的Demo.

Runnable接口实现线程,Handler消息队列更新UI

在Android中不允许Activity新启动的线程访问该Activity里的UI组件 而一般一个activity中需要由多个线程来完成不同任务,然后更新UI;比如我们使用手机在线听音乐,它要一边缓冲一边播放,同时还要显示播放进度,这些都需要更新UI,而又很难在一个线程中完成,所以就可以通过Handler()来完成这些更新,通过创建一个handler实例,它会被绑定到创建它的线程中(通常即为主线

u010698072的博客 1853

驯服电源尖峰:从BUCK/BOOST环路剖析到高di/dt噪声的实战抑制

本文深入探讨了电源系统中高di/dt噪声的产生机制及抑制方法,通过BUCK/BOOST电路的环路分析,揭示了电流路径不连续导致的电压尖峰问题。文章提供了实用的PCB布局技巧和噪声抑制策略,包括最短回路原则、铺铜优化和过孔阵列战术,帮助工程师有效降低EMI噪声,提升电源系统的稳定性。

weixin_29587015的博客 273

Android Handler 源码解析,从入门到几乎入门

在 Android 中,Handler 是一种强大的机制,用于在不同的线程之间进行通信。通过 Handler,你可以轻松地将任务从一个线程发送到另一个线程,通常用于在后台线程执行任务后更新UI。同时handler机制也是Android主线程运行的原理,了解了主线程的运行原理也就可以知道leakCancry的实现原理。

xiaokangss的博客 419

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 341

手把手教你用gmid方法设计二级运放:从理论到仿真全流程(附避坑指南)

本文详细介绍了使用gmid方法设计二级运放的全流程,从理论到仿真实践,特别针对初学者常见问题提供避坑指南。通过系统化的晶体管尺寸确定技术,帮助工程师在性能、功耗和面积之间找到最佳平衡点,适用于模拟集成电路设计中的关键模块开发。

weixin_29213525的博客 271

Handler机制中的消息队列

学习自蘑菇街大佬 Handler机制可以看成是一个消息阻塞队列,当有消息时立即处理消息,没有消息时则阻塞.在Android系统中APP启动后很快进入死循环,不断读取MessageQueue中的消息,有消息则立即处理,没有消息则阻塞.Android的View绘制,事件响应(点击,触摸屏幕等)都是把消息发送到了主线程的消息队列,包括自己在主线程创建的handler最终也是把消息插入到了...

测试 650

Autosar软件组件分析及ARXML文件分析

Autosar软件组件分析及ARXML文件分析

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 3600

想实现Android队列功能?Handler内功心法,你值得拥有!(一)——Handler源码和常见问题的解答

在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

2401_84121603的博客 872

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 2418

【AutoSAR】【BootLoader】AutoSAR Bootloader 原理与流程

目录 一、HIS规范 二、BOOTLOADER软件架构 三、烧写流程 一、HIS规范 国外整车厂意识到在线刷新ECU的重要性,由奥迪公司、宝马公司、戴姆勒公司、保时捷公司、大众公司成立一个委员会,名为HIS委员会,专门负责帮助汽车制造商掌握微处理器控制单元软件和质量保证领域的原理和方法; HIS Bootloader的主要功能是通过标准的通信接口对ECU进行再编程 。 HIS Bootloader的软件设计基于AUTOSAR体系架构、ISO14229、ISO15765-2、HI...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5247

handler用法

Handler对象与其调用者在同一线程中,如果在Handler中设置了延时操作,则调用线程也会堵塞。每个Handler对象都会绑定一个Looper对象,每个Looper对象对应一个消息队列(MessageQueue)。如果在创建Handler时不指定与其绑定的Looper对象,系统默认会将当前线程的Looper绑定到该Handler上。 在主线程中,可以直接使用new Handler()创建Ha

lzhenj的博客 292

LPDDR5 物理层一致性测试(连载・下):电平、过冲下冲与 Rx 接收眼图 Mask 掩模完整指标解读

本文系统梳理LPDDR5物理层一致性测试全流程,涵盖差分/单端电平、边沿斜率、交叉点电压、过冲下冲及CS/CA/DQ接收眼图掩模(Rx Mask)测试,详解各参数定义与工程实操要点。强调配置需与DRAM MR寄存器同步,突出差分≠合格、面积积分不可忽视、掩模失败优先排查参考电压与信号完整性等高频坑点,为硬件调试与SI工程师提供权威参考。

一只豌豆象的博客 39

Handler消息机制-Handler

Handler 消息处理机制主要由 Handler、Looper、MessageQueue 和 Message 四部分组成。Handler作用:用于发送消息和处理消息。发送消息到 MessageQueue。处理从 Looper 分发的消息。特点:每个 Handler 绑定到一个 Looper,从而绑定到一个线程。可以发送 Message 或 Runnable。Message作用:消息的载体,封装了需要处理的任务或数据。通过 what 字段标识消息类型。通过 obj 字段传递数据。

只想搞钱 1719

SAP 未清PO数量 = 采购订单数量 - 已收货数量

本文介绍了SAP系统中查询未清PO数量的6种方法:1.标准采购报表(ME2L/ME2M/ME2N)适合业务用户快速查询;2.物料需求报表(MD04)可查看单个物料的供需情况;3.SQVI快速查询器提供自定义字段的灵活性;4.ABAP报表适合开发人员处理复杂逻辑;5.SAPQuery经配置后可供业务用户使用;6.BI/HANA方案适合大数据量分析。每种方法各有优缺点,用户可根据自身技术水平和具体需求选择,日常查询推荐使用标准采购报表ME2L/ME2M。

金牌架构师 1851

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入理解 Handler、Looper 、 MessageQueue和 HandlerThread

在 Android 中,负责界面绘制和用户交互。如果我们在主线程执行耗时操作(如网络请求、数据库查询、文件读写等),会导致界面卡顿甚至ANR因此,Android 采用让耗时任务放在子线程执行,但子线程那么,👉Handler—— 它可以让不同线程之间安全地通信,并支持消息机制。HandlerMessageLooperLooperHandlerHandlerMessageLooperHandler以下代码展示了Handler。HandlerLooper如果你需要Looper,你不能直接用Thread,因为。

居然是阿松的博客 1226

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Handler

Handler是Android中提供的一种,也可以理解为。为了避免ANR,我们通常会把一些耗时操作(比如:网络请求、I/O操作、复杂计算等)放到子线程中去执行,而当子线程需要修改UI时则子线程需要通知主线程去完成修改UI的操作,则此时就需要我们使用。

xiaowang_lj的博客 1381

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android—ActivityThread与Handler

ActivityThread ActivityThread就是主线程或UI线程,ActivityThread的main方法是整个APP的入口。 public final class ActivityThread { //... private static ActivityThread sCurrentActivityThread; public static ActivityThread currentActivityThread() { return sC

#请假条的博客 1396

Handler机制(异步消息处理机制)

Handler机制(异步消息处理机制)

qq_49792179的博客 2049

Android Handler消息队列的实现原理

我们在写Android程序的时候,有经常用到Handler来与子线程通信,亦或者是用其来管理程序运行的状态时序。Handler其是由Android提供的一套完善的操作消息队列的API。它既可以运行在主线程中,也可以运行在子线程中,唯一的区别是其内部的Looper对象不同。在这里我将对Android中Handler消息队列的实现进行一个总结,以便深入了解其原理并且巩固其使用方式。 本系列的主要内容如...

变 4409

handler——消息队列模型

转自http://blog.youkuaiyun.com/fdaopeng/article/details/7863840 通过下图可以清晰显示出UI Thread, Worker Thread, Handler, Massage Queue, Looper之间的关系: 解释上图中的几个基本概念:   1.Message        消息对象,顾名思义就是记录消息信息的类。这个类

chuntiandejiaobu10的专栏 472

详解Handler机制中消息队列的出队逻辑

源码解析源码解析请直接见代码注释:@UnsupportedAppUsage Message next() { // 如果消息循环已经退出并已被释放,则返回此处。 // R...

音视频开发进阶 391

【Android】Handler、Looper、消息队列运行机制原理解析及相关面试题

Handler及消息队列是Android中一个基本的知识点,也是Android应用建立的基石。本文介绍了Handler的运行机制,以及相关面试题的答案。 目录:1、Looper和消息队列机制;2、Handler发送消息流程;3、相关面试题

LittleFogCat的专栏 我的个人网站:https://xiaoniu.tech 894

Handler消息机制

Handler机制的原理,现在几乎成了面试必问问题之一了。也是用的比较多的知识点之一,所以了解它的原理是必需也是必须的。

依然的专栏 678

【Android学习笔记】Handler的使用方法

1.Handler的基本概念 下载,连接网络各种

小镜子~ 720

Handler发送消息后消息队列的处理

在Android中使用Handler不仅可以直接post发送消息,还可以通过postDelayed设定延迟时间,来延迟执行消息任务。那么这后面的机制是如何处理的呢?首先查看Handler的源码,会发现post和postDelayed内部均调用的同一方法sendMessageDelayed:public final boolean post(Runnable r) { return sendM

RickyXE 4122
上一篇: Android菜鸟日记8 view控件
下一篇: Android菜鸟日记10 SQLite 数据库
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值