我是靠谱客的博主 标致海燕,最近开发中收集的这篇文章主要介绍安卓定时器类Timer与消息处理类Handler1 定时器类Timer2 消息处理类Handler,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


安卓串口编程中,需要循环判断串口中是否有数据到来,如果有数据到来,则接收数据。可以通过定时器类Timer和消息处理类Handler来实现以上功能。

1 定时器类Timer

Timer表示定时器类,该类可以为后台进程安排要执行的任务。每个Timer对象相对应一个后台线程,用于顺序地执行任务。

1.1 创建定时器类对象

onCreate()方法中通过new创建Timer类的对象。

Timer timer = new Timer();

1.2 定义定时器任务类对象

TimerTask表示定时器任务类,该类的全称是java.util.TimerTask。该类包含一个抽象的方法run(),该方法即为定时器指定的任务。在定义该类的对象时必须重写run()方法。

MainActivity类添加一个访问权限是private的成员变量,该变量的类型是TimerTask

private TimerTask timerTask = new TimerTask()
{
@Override
public void run()
{
Message msg = new Message();
msg.what = 1;
myHandler.sendMessage(msg);
}
};
其中,在重写的run() 方法中,向主线程发送消息,主线程收到消息之后进行后续处理。 myHandler 是消息处理类 Handler 的对象,该消息处理类在“ 2 消息处理类 Handler ”中详细介绍。

1.3 启动定时器

通过定时器类Timerschedule()方法启动定时器。该方法的格式之一为

public void schedule(TimerTask task, long delay, long period);
其中,参数task 是定时器的任务; delay 指定了在执行任务前要等待的时间; period 指定了执行任务的周期。

onCreate()方法中启动定时器。

timer.schedule(timerTask, 0, 500);
其中,timer 是在“ 1.1 创建定时器类对象”中创建的定时器类对象; timerTask 是在“ 1.2 定义定时器任务类对象”中定义的定时器任务类的对象。以上代码的作用是启动了一个定时器,该定时器每隔 0.5 秒就向主线程发送消息。

2 消息处理类Handler

1定时器类Timer”中提到,定时器每隔0.5秒就向主线程发送消息,该消息被放到程序的消息队列中,消息处理类从消息队列中取出消息并进行处理。

2.1 消息类Message

1.2 定义定时器任务类对象”中已经提到,Message表示消息类。可以通过new关键字创建消息类的对象。该类中的what字段可以保存用户自定义的消息,消息处理类可以通过该字段来判断消息不同的类型并进行不同的处理。在定义了消息对象之后,通过消息处理类Handler的对象myHandler,调用该类的sendMessage()方法,将定义的消息发送给主线程,代码见“1.2 定义定时器任务类对象”。

2.2 定义消息处理类的对象

Handler表示消息处理类。在MainActivity类中通过new关键字创建Handler类的对象myHandler。在创建对象时,需要重写Handler类的handleMessage()方法,使用该方法来处理收到的消息。

private Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 1:
//判断串口中是否有数据到来,如果有数据则接收
break;
}
}
};
在以上代码中,通过new 关键字创建了 Handler 类的对象 myHandler ,该对象即为“ 1.2 定义定时器任务类对象”中提到的变量。重写了 handleMessage() 方法,在该方法中,对消息类对象 msg what 进行判断,如果该值为 1 ,则说明是“ 1.2 定义定时器任务类对象”中提到的每隔 0.5 秒就发送一次的消息。收到该消息后,判断串口中是否有数据,如果有数据,则接收。

定时器Timer与消息处理类Handler的关系如图1所示。

 

1 TimerHandler的关系

最后

以上就是标致海燕为你收集整理的安卓定时器类Timer与消息处理类Handler1 定时器类Timer2 消息处理类Handler的全部内容,希望文章能够帮你解决安卓定时器类Timer与消息处理类Handler1 定时器类Timer2 消息处理类Handler所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部