Handler消息传递机制

本文介绍了Android中UI线程安全的概念及其重要性,并详细解析了Handler类的工作原理和使用方法,帮助开发者理解如何在多线程环境中正确地更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中UI并不是线程安全的,什么是线程安全呢

https://zh.wikipedia.org/wiki/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8

这是维基给出的解释。
如果有多个线程操作UI,会造成线程不安全问题。因此Android有规定:UI组件只能在Activity中对UI进行操作。
当一个程序第一次启动时,Android会同时启动一个Main Thread(主线程),主要负责与UI有关的操作,因此也被称为UI线程。
Addroid中消息传递机制主要是为了解决线多程安全问题,因为Android中只允许UI线程修改Activity中的UI组件,这样就导致了新启动的程序无法动态的改变组件的属性。这里就需要Handler来处理。

Handler类的作用:

  • 在新启动的线程中发送消息,
  • 在主线程中处理和接受消息。

    开发者只需重写Handler类中处理消息的方法即可,当新启动的线程发送消息时,会发送到MessageQuene(消息队列),而Handler会不断的从中队列中取出并处理消息。
    标注了一些比较常用的方法:

这里写图片描述

这里写图片描述

void handleMessage(Message msg):处理消息的方法。一般被重写。
boolean hasMessages(int what):检查消息队列中是否有包含what属性为指定值的消息。
hasMessages(int what, Object object):检查消息队列中是否有包含what属性且Object为指定值的消息。
Message obtainMessage():获取消息。
sendEmptyMessage(int what):发送空消息。
sendMessageDelayed(Message msg, long delayMillis):在一定时间内发送消息。
sendMessage(Message msg):立刻发送消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值