【android】Handler机制的原理

这里写图片描述

花了两节课理解总结出来的,更多详情可以看

鸿洋的博客

Android中的Handler机制是用于线程间通信的一种机制。它允许在不同的线程之间发送和处理消息或可运行对象(Runnable)。Handler机制的主要原理是通过消息队列(MessageQueue)和循环器(Looper)来实现的。 ### Handler机制原理 1. **MessageQueue**:消息队列,用于存放通过Handler发送的消息。每个线程只能有一个MessageQueue。 2. **Looper**:循环器,用于从MessageQueue中取出消息并分发到对应的Handler进行处理。每个线程也只能有一个Looper。 3. **Handler**:处理器,用于发送消息到MessageQueue以及处理从Looper分发过来的消息。 ### 工作流程 1. **创建Handler**:在需要处理消息的线程中创建一个Handler对象。 2. **发送消息**:通过Handler发送消息或可运行对象(Runnable)到MessageQueue。 3. **Looper循环**:Looper会不断从MessageQueue中取出消息,并调用Handler的handleMessage方法进行处理。 ### 使用方法 1. **在主线程中使用Handler**: ```java Handler handler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { // 处理消息 } }; // 发送消息 handler.sendEmptyMessage(0); ``` 2. **在子线程中使用Handler**: ```java class LooperThread extends Thread { public Handler handler; @Override public void run() { Looper.prepare(); handler = new Handler(Looper.myLooper()) { @Override public void handleMessage(Message msg) { // 处理消息 } }; Looper.loop(); } } // 启动线程 LooperThread looperThread = new LooperThread(); looperThread.start(); // 发送消息 looperThread.handler.sendEmptyMessage(0); ``` ### 注意事项 - **线程安全**:Handler默认绑定到创建它的线程的Looper,因此确保在正确的线程中创建和发送消息。 - **内存泄漏**:避免在Handler中持有对Activity或Context的引用,以防止内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值