Android消息机制(Handler、MessageQueue及Looper工作原理)
发布时间
阅读量:
阅读量
Android的消息机制涉及三个核心组件:消息处理器(Handler)、消息队列(MessageQueue)以及定时器(Looper)。其中消息队列(MessageQueue)采用先进先出机制,并存储一组消息数据,并支持插入与删除操作;Looper具有循环功能其主要职责是定期检查MessageQueue中的消息然后由消息处理器(Handler)进行处理当队列为空时会暂时搁置任务;而 Handler 则负责协调Looper与 MessageQueue的工作流程以实现信息的发送与接收功能。
在Handler中规定了一个机制:每个线程只能有一个Looper(Looper),但默认情况下该属性尚未被设置(即未被初始化)。因此,在开发Android应用时需要特别注意这一点:如果想让UI线程直接调用Handler,则必须确保主线程已经设置了Looper(即通过设置main thread's Looper来避免出现无法调用Handler的情况)。此外,在Handler机制中存在一个叫做ThreadLocal的对象(尽管它本身并不是一个完整的线程),其主要作用是为每个不同的线程提供存储空间(类似于内存中的堆栈),从而实现各子线程之间的数据隔离与互不干扰。具体而言,Looper正是通过调用该对象的方法来保存当前正在运行的线程所使用的Looper实例。
ThreadLocl的工作原理
全部评论 (0)
还没有任何评论哟~
