定义一个定时器及定义一个TimerTask处理handler事件
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Message message = new Message();
message.what = 2;
mHandler.sendMessage(message);
}
});
thread.start();
}
};
##开启一个定时器
timer.schedule(task,200,10000);
说明:
第一个参数是定时器要做的任务(task),这里是处理handler 消息
第二参数是什么事件做这个任务(task),这里写的是200ms,即200ms后timer开始处理任务。
第三个参数是执行任务的时间间隔,即每隔10s执行一次任务(task),如果不写的话,定时器只执行一次任务。
定时器的请求周期
定时器如果不销毁的话会一直执行,但定时器一直执行的话,那么程序很可能就会崩溃所以说定时器用完要及时的关闭
定时器的开启一般会写在onStart里面
定时器的销毁会写在onStop里面
销毁定时器
timer.cancel();
离开本界面的时候就执行这句话那么定时器就不会在执行了,进入本界面时在onStart中执行定时器那么就开启了定时器。
注意: timer的开启和销毁不一定定义在onStart()或onDestroy()方法中。
一个定时器代码
touchtimer = new Timer();
touchtimer.schedule(new TimerTask() {
@Override
public void run() {
Thread thread = new Thread(new Runnable() { //定义一个线程
@Override
public void run() {
Message message = new Message();//定义一个消息message
message.what = 2; //自定义一个消息的what属性(区分不同消息)
mHandler.sendMessage(message); //发送消息
}
});
thread.start(); //开启线程
}
},300,200);
public Handler mHandler = new Handler() { //定义一个Handler并来处理消息
public void handleMessage(Message msg) { //接受并处理线程发送来的消息
switch (msg.what) { //识别线程发送的消息的what
case 2: //根据what执行不同的事件方法,这里只定义里一个what
执行定义的事件或事件处理方法;
break;
default:
break;
}
super.handleMessage(msg);
};
protected void onDestroy() { //销毁timer
super.onDestroy();
timer.cancel();
}