Handler的使用在android开发中给我们提供了太多的便捷,它的主要作用有两个:
在新启动线程中发送消息;
在主线程中获取,处理消息;
今天这里总结一下,在项目开发中经常使用到Hanlder的几种实例:
1,延时执行函数A,只执行一次
定义消息变量:
private final static int MSG_A_START = 0x0001;
private int delayTime = 1000;
private Handler mHandler = null;
调用:
mHandler=new Handler()
{
@Override
public void handleMessage(Message msg) {
switch (msg.what)
{
case MSG_A_START :
A();
}
}
};
if (true) {
mHandler.sendEmptyMessageDelayed(MSG_A_START , delayTime );
}
2,某段时间内一直触发执行函数A,执行N次,可设置时间间隔
手指按下时执行,抬起时停止:
手指按下:
if (mHandler != null) {
Message message = mHandler.obtainMessage(MSG_A_START );//获取消息
mHandler.sendMessage(message);//立刻出发
mHandler.sendMessageDelayed(message, delayTime );//以delayTime 时间间隔触发
}
手指抬起:
if (mHandler != null) {
mHandler.removeMessages(MSG_A_START );
}
声明Handler:
mHandler=new Handler()
{
@Override
public void handleMessage(Message msg) {
switch (msg.what)
{
case MSG_A_START :
A();
}
}
};
3,与Timer结合,定义计时器,周期执行A
只需要给Handler增加计时器:
new Timer().schedule(new TimerTask()
{
@Override
public void run() {
// TODO Auto-generated method stub
mHandler.sendEmptyMessage(MSG_A_START);
}
},0,delayTime);//以delayTime时间间隔发送消息执行A,此方法可以显示循环动画播放
以上三种情况是我们比较常用到的,一起学习,一起总结下呵呵!