android 消息发送机制,Android消息机制概述

cf798a06421a9784073bf3d2e0f2af65.png

Android的消息机制主要是指Handler的运行机制,Handler的运行需要MessageQueue,Looper的支持;Handler的主要作用就是讲一个任务切换到某个指定的线程中去执行,主要去执行一些UI操作;

1、ThreadLocal的工作原理;

Threadlocal主要作用是可以根据不同的线程互不干扰的存储数据和提供数据,其内部封装了ThreadlocalMap类用于数据存储和提供,分别使用get和set方法,存取数据时都会去调用Thread.currentThread();方法获取当前线程,在不同的线程中访问同一个Threadlocal的get()和set()方法,它们对Threadlocal所做的读写操作仅限于各自线程的内部。

2、消息队列的工作原理;

MessageQueue:消息队列,用于存放Handler发出的消息,其存放的方式使用单链表数据结构,单链表在插入和删除上比较有优势,插入和读取分别对应了enqueueMessage()和next方法,前者是往消息队列里插入一条数据,后者则是取出消息后并且在消息队列中移除,next是一个无限循环的方法,没有消息时阻塞等待,当有新消息时,next会返回这条消息并将其从队列中移除。

3、Looper的工作原理;

Looper:轮询器,实际上Looper就是一个无限循环的消息轮询器,跟MessagQueue结合,不断的从MessageQueue中查看是否有新消息,去调用MessageQueue的next方法,因为next就是一个无限循环的方法,因此Looper的loop方法也是跟next一样,无消息时等待,有消息时获取,当获取到消息时会交给Handler去处理,Handler的dispatchMessage方法被调用;

4、Handler的工作原理;

Handler的工作主要包括发送消息和接收消息,消息的发送可以通过post或者send等一系列的方法,其中post一系列的方法也是通过send发出的。Handler发送消息其实就是把消息插入到MessageQueue中,MessageQueue通过next方法把消息传递给Looper,Looper收到消息处理后交由Handler处理,Handler接收到消息,dispatchMessage被调用,处理过程:先检查Message的callback是否为null,不为null就通过handlerCallback来处理消息,其次检查mCallback是否为null,不为null则调用handlerMessage方法完成回调。

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值