Android笔记——Handler

本文介绍了Android中Handler的作用和工作原理,包括在新线程中发送消息、主线程处理消息,以及Looper、Message和MessageQueue的关系。Handler主要用于解决多线程环境下更新UI的问题,通过Looper不断从MessageQueue中取出消息并调用handleMessage()方法。在主线程中,系统已初始化Looper,可以直接使用Handler;而在子线程中,需要手动创建并启动Looper。
摘要由CSDN通过智能技术生成

一、Handler类的作用

由于主线程只能处理UI相关的事件,比如说按键、用户触屏以及屏幕绘图事件等。所以当我们处理比较耗时的任务的时候,需要另起线程。但是Android规定,只有主线程能够修改Activity里面的UI组件,这样就会导致我们新起的线程中无法动态改变UI组件的属性值。为了处理Android中多线程的问题,我们就借助Handler类来处理了。

所以说Handler类的作用主要有两个:1是在新线程中发送消息;2是在主线程中获取、处理消息。

对于开发者来说,我们只需要重写Handler中的handleMessage(Message msg)方法就可以了,当新线程启动线程发送消息的时候,消息会发送到与之关联的MessageQueue队列中,然后Handler就会不断从MessageQueue中取出消息然后执行handleMessage()方法,这就会导致Handler类中的handleMessa()方法被回调。


二、Handler类工作的原理

首先我们来认识一下Looper、Message、MessageQueue这三个东西。

1.Looper:每个线程有且只能拥有一个Looper。它的loop方法负责读取MessageQueue中的消息,读到信息之后就把消息交给发送该消息的Handler进行处理了。

2.Message:Handler接收和处理的消息对象。

3.MessageQueue:消息队列,它采用的是先进先出的方式进行管理Message。程序创建Looper对象的时候会在它的构造器中创建MessageQueue对象。

我们知道Handler的作用有两个:发送消息和处理消息。当程序使用Handler发送消息的时候,被Handler发送的消息就会送到指定的MessageQueue队

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值