定義一個定時器及定義一個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();
}