Android中Handler的使用方法——构建定时器
2010-06-19 14:27
561 查看
在这篇文章中,我将继上一篇,讲解用Handler来构建最简单的周期性触发的定时器,您可以加以修改,构建更为复杂的定时器。
◆ 在代码中定义一个整形常量,代表消息的ID。此处不妨对其取名为TIMERID。
◆创建自己的Handler,在该Handler中HandlerMessage处理函数中。在消息处理函数中,我们首先发送消息TIMERID,并指定其延迟的时间,单位为毫秒。然后可以调用相应的事务处理函数。需要注意的是,如果事件处理函数花费的时间过长,则下次消息到来时,会导致不能及时处理。
◆创建startTimer函数,在该函数中触发定时器,实际上就是发送一个TIMERID消息,来第一次触发消息。
◆创建stopTimer函数,在该函数中停止定时器,实际上就是把TIMERID的消息从消息队列中删除即可。
下面让我们来以代码作为说明。
package com.android.mytimer;
import android.os.Handler;
import android.os.Message;
public class MyTimer extends Handler
{
private static int TIMERID = 0; //静态变量,保证ID唯一。当ID超过整形最大值时,应该把它恢复为0
private final int mInterval;
public interface CallBack{
void timerCallBack();
}
private CallBack mCallBack;
public MyTimer(int interval, CallBack callback)
{
mInterval = interval;
mCallBack = callback;
TIMERID++;
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if( msg.what == TIMERID)
{
Message message = obtainMessage(TIMERID);
this.sendMessageDelayed(message, mInterval);
//for speed up, NO NULL Pointer exception check
mCallBack.timerCallBack();
}
}
public void startTimer()
{
Message msg = this.obtainMessage(TIMERID);
this.sendMessage(msg);
}
public void stopTimer()
{
this.removeMessages(TIMERID);
}
}
其中接口CallBack是一个回调函数,使用这个定时器的应用必须实现该接口,并且在构造函数当中传入该类。如下
public class TestTimer implement MyTImer.CallBack
{
MyTimer mTimer;
public TestTimer()
{
mTimer = new MyTImer(10, this);
mTimer.start();
}
void timerCallBack();
{
Log.i("TestTimer", "this is the timerCallBack");
}
}
◆ 在代码中定义一个整形常量,代表消息的ID。此处不妨对其取名为TIMERID。
◆创建自己的Handler,在该Handler中HandlerMessage处理函数中。在消息处理函数中,我们首先发送消息TIMERID,并指定其延迟的时间,单位为毫秒。然后可以调用相应的事务处理函数。需要注意的是,如果事件处理函数花费的时间过长,则下次消息到来时,会导致不能及时处理。
◆创建startTimer函数,在该函数中触发定时器,实际上就是发送一个TIMERID消息,来第一次触发消息。
◆创建stopTimer函数,在该函数中停止定时器,实际上就是把TIMERID的消息从消息队列中删除即可。
下面让我们来以代码作为说明。
package com.android.mytimer;
import android.os.Handler;
import android.os.Message;
public class MyTimer extends Handler
{
private static int TIMERID = 0; //静态变量,保证ID唯一。当ID超过整形最大值时,应该把它恢复为0
private final int mInterval;
public interface CallBack{
void timerCallBack();
}
private CallBack mCallBack;
public MyTimer(int interval, CallBack callback)
{
mInterval = interval;
mCallBack = callback;
TIMERID++;
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if( msg.what == TIMERID)
{
Message message = obtainMessage(TIMERID);
this.sendMessageDelayed(message, mInterval);
//for speed up, NO NULL Pointer exception check
mCallBack.timerCallBack();
}
}
public void startTimer()
{
Message msg = this.obtainMessage(TIMERID);
this.sendMessage(msg);
}
public void stopTimer()
{
this.removeMessages(TIMERID);
}
}
其中接口CallBack是一个回调函数,使用这个定时器的应用必须实现该接口,并且在构造函数当中传入该类。如下
public class TestTimer implement MyTImer.CallBack
{
MyTimer mTimer;
public TestTimer()
{
mTimer = new MyTImer(10, this);
mTimer.start();
}
void timerCallBack();
{
Log.i("TestTimer", "this is the timerCallBack");
}
}
相关文章推荐
- Android中Handler的使用方法——在子线程中更新界面
- Android定时器之Handler的postDelyed方法
- android Handler详细使用方法实例
- 使用android中的handler延迟执行方法
- (转)Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- 第五课:Android中Handler、Loop、MessageQueue的工作原理和使用方法
- Android编程:定时器和Handler的使用
- handler的使用---如何实现Android计时与倒计时的几种方法
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- android Handler详细使用方法实例
- android Handler详细使用方法实例
- Android中Handler的使用方法及实例(基础回顾)
- handler的使用---如何实现Android计时与倒计时的几种方法
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android--Handler的使用方法:在子线程中更新界面
- Android开发使用Handler的PostDelayed方法实现图片轮播功能
- android Handler 使用方法
- android开发教程之android的handler使用方法
- Android HandlerThread使用方法 .
- android Handler详细使用方法实例