2024年4月8日发(作者:)

handler机制

Android发中,Handler制被广泛应用,它有效地解决了线程间

通信的问题。Handler制由 Android核心框架(Android Framework)

提供,它实现多个线程之间的通信功能和消息传递,以及管理线程之

间消息传递时的同步机制。

一、Handler制简介

Handler主要任务是将子线程发来的消息传递到主线程,也就是

UI线程,从而实现线程间的数据交互和消息传递。Handler制由 3

分组成:Message、Handler、Looper。

(1)Message:即消息,Message象是用来描述线程间传递的数

据,还可以存放一些描述性的信息,例如:what、arg1、arg2等。

(2)Handler:即处理器,Handler一个抽象类,它负责接收子

线程发来的消息,对消息进行处理,并将消息发送到主线程。

(3)Looper:Looper于从 MessageQueue 中取出消息,并将消

息交给 Handler行处理。

二、Handler制实现

(1)构造 Handler象

Handler象通常是在主线程中通过构造函数构造出来的,在构造

函数中可以指定 Looper象,也可以不指定,如果不指定,则 Handler

认使用主线程的 Looper象。

(2)处理子线程消息

Handler象有一个 handleMessage()法,当Looper从

- 1 -

MessageQueue 中取出消息时,会将消息交给 Handler

handleMessage()法,开发者可以重写 handleMessage()法,来实现

对子线程消息的处理。

(3)向子线程发送消息

当需要子线程执行某项任务时,主线程可以通过 Handler

sendMessage()法来发送消息,sendMessage()法会将消息封装成

Message象,并将消息存放至 MessageQueue 中。

三、Handler制应用

(1)定时器

Handler制可以用于实现定时器功能,开发者可以在主线程中通

过 Handler postDelayed()法,设定一段时间后执行某项任务,从而

实现定时器功能。

(2)子线程向主线程传递消息

Handler制也可以用于子线程向主线程发送消息,让主线程来更

新 UI,这样就可以避免 UI程阻塞,提升程序效率。

四、总结

Handler制是 Android发中常用的一种消息传递机制,它有效地

解决了线程间通信的问题,并且可以用于实现定时器功能和子线程向

主线程发送消息等功能。此外,Handler制还可以用于处理多个线程

排队运行的状况,合理地安排线程的执行顺序,从而提升程序的效率。

- 2 -