为什么要用Handler
一、什么是handler?
注:线程分为主线程(主线程又叫UI线程,只能有一个主线程)和子线程(可以有多个)Handler只能在主线程里运行
handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,我们可以发消息,也可以通过它 处理消息。
二、为什么要用Handle?
因为android在设计的时候就封装了一套消息创建、传递、处理。如果不遵循就不能更新UI信息,就会报出异常(所谓的异步消息处理)
三、 Handler的工作原理?
Handler的工作原理是Handler发送消息给MessageQuee给形成Handle MessageQuee再由Handle MessageQuee传递消息给Looper(一个对象)最后由Looper递交给 Handler处理(一个Handler里面必须要有一个Looper)
Handler、Looper、MessageQueen、Message的关系
Message: Handler接收和处理的消息对象
MessageQueen: 存储消息对象的队列
Looper: 负责读取MessageQueen中的消息,读到消息之后就把消息交给Handler去处理。
Handler:发送消息和处理消息
四、什么是Message Quee
Message Quee就是存储消息对象的队列(消息来自于Message)
五、Handler怎么用
Handler主要有发送消息和处理消息两大作用
Handler发送消息给Message而Message再由 MessageQueen进行消息的存储,接着由Looper负责读取 MessageQueen中的消息,最后由Handler处理消息。
总结:
Looper的作用:每个线程只有一个Looper,他负责管理MessageQueue,会不断的从MessageQueue取出消息,分发给对象 的handler
MessageQueue的作用:由Looper管理,而MessageQueue则采用先进的方法来管理Message!
Handler的作用:它把消息发送给Looper管理的MessageQueue,并负责处理Looper分发给他的消息。
为什么要用Handler相关推荐
- 为什么UI线程中创建Handler可以不传Looper?
一个APP程序的入口是ActivityThread的main方法,ActivityThread就是我们常说的主线程或UI线程,事实上它并不是一个线程,而是主线程操作的管理者. public stati ...
- Android中Handler消息机制
作用:跨线程通信. 应用:AsyncTask.retrofit都对Handler进行了封装. 四要素:Message.MessageQueue.Looper.Handler Message简介: 线程 ...
- Python:urllib2模块Handler处理器 和 自定义Opener
Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,我们之前一直都在使用的urlopen,它是一个特殊的opener(也就是模块帮我们构 ...
- Android Handler sendMessage和 sendMessageDelayed的使用
sendMessage :立即发送消息 sendMessageDelayed:指定多少毫秒后发送消息. 其实常用的还有2个 sendEmptyMessage 发送空消息, 一般自己想把某种操作放到子 ...
- Handler 实现的一个循环操作
这个使用Handler 实现的一个循环操作还是比较简单的,下面就直接给出demo了 一个间隔5s 弹一次Toast 的demo 如下 public class MainActivity extends ...
- Handler 实现的一个延时操作
今天回顾下handler 记录一个延时的demo 使用 postDelayed 主要代码如下: public class MainActivity extends AppCompatActivity ...
- Android 实现一个验证码倒计时(Handler postDelayed 实现验证码倒计时)
直接看代码吧,很简单 public class MainActivity extends AppCompatActivity {private TextView code;private Handle ...
- Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
sendEmptyMessage 发送空消息 sendEmptyMessageDelayed 指定多少毫秒后发送空消息 常用的还有2个如下 sendMessage :立即发送消息 sendMessag ...
- Handler的postDelayed()关闭的方法
关闭的方法主要使用removeCallbacks,下面举一个demo 说明 使用方法: 1,首先创建一个Handler对象 Handler handler=new Handler(); 2,然后创建一 ...
- Spring MVC-处理程序映射(Handler Mapping)-简单的Url处理程序映射(Simple Url Handler Mapping)示例(转载实践)...
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_simpleurlhandlermapping.htm 说明:示例基于Spring ...
最新文章
- VC++6.0出现no compile tool is associated with the extension.解决方法
- 老信贷总结:贷款催收技巧和注意事项
- C#将内容导出到Word到指定模板
- Ribbon客户端负载均衡介绍
- python 枚举相等判断_python中is和==的区别
- 迫于误解压力,RMS从自由软件基金会与MIT离职
- math.pow int_Java Math类static int min(int i1,int i2)与示例
- muyucms轻量级内容cms
- JS的一些时间获取和计算公用方法封装
- Elasticsearch 分片和副本策略
- springboot+mybatis事务管理
- 51最小系统原理图 PCB
- 多个category实现同一个方法调用的顺序
- Echarts实现以秒为单位的动态三条折线图显示
- u盘超级加密3000使用方法
- 小米java模拟器_Android沉浸式简单实现(暂未测试全部机型,根据资料修改,模拟器,小米6,,荣耀做了简单测试)...
- android更新软件,Android软件的自动更新
- 服务器微信了早上好,微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短...
- PIC18F47K42 初学篇-1
- 如何在Eclipse中添加Tomcat的jar包