首页 理论教育 Handler类及其使用方法

Handler类及其使用方法

时间:2023-06-27 理论教育 版权反馈
【摘要】:Android.os.Handler是Android SDK中处理定时操作的核心类。通过Handler类,可以提交和处理一个Runnable对象。利用Handler的post方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。在初始化Handler对象时,重写的handleMessage方法接收Messgae并进行相关操作。在Handler内处理消息的代码示例如下。

Handler类及其使用方法

在Android开发中,有一个重要的规则:主线程不做耗时操作,子线程不更新UI。那么在子线程需要更新UI界面的数据时要怎么处理呢,就要使用Handler来实现。

Android.os.Handler是Android SDK中处理定时操作的核心类。Handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建它的线程中(一般位于主线程),也就是说,Handler对象初始化后,就默认与对它初始化的进程的消息队列绑定,因此可以利用Handler所包含的消息队列,制定一些操作的顺序。

(1)通过Handler类,可以提交和处理一个Runnable对象。这个对象的run方法可以立刻执行,也可以在指定时间之后执行(称为预约执行)。

利用Handler的post方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。

下面为示例代码。

程序的运行结果是每隔3秒钟,就会在控制台打印一行UpdateTread。这是因为实现了Runnable接口的UpdateThread对象进入了空的消息队列即被立即执行run方法,而在run方法的内部,又在3000ms之后将其再次发送进入消息队列中。

Handler延时调用Runnable对象的格式如下。(www.xing528.com)

这个线程其实是在UI线程之内运行的,并没有新建线程。常见的新建线程的方法如下。

(2)传递Message。接受子线程发送的数据,并用此数据配合主线程更新UI。

在Android中,对于UI的操作通常需要放在主线程中进行。如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,用Han-dler中的handlerMessge方法处理传过来的数据信息,并操作UI。sendMessage(Message msg)方法实现发送消息的操作。在初始化Handler对象时,重写的handleMessage(Message msg)方法接收Messgae并进行相关操作。

在线程里创建消息,并发送消息的代码示例如下。

在Handler内处理消息的代码示例如下。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈