timer+thread 入門,簡單封裝
來源:程序員人生 發布時間:2015-05-12 09:23:34 閱讀次數:3518次
我們平時常常會用到timer,不過將timer放在主線程會加重主線程的負擔
所以我們更偏向于使用多線程實現timer,每隔1段時間再通知主線程更新ui
大致思路:
- 使用thread,run,handler,msg實現多線程
- 使用timer,timerTask實現定時器功能
我們先來實現主線程中,更新ui的功能
新建1個handler,收到指定任務的code時,就履行我們定義的步驟
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == task_code) {
//timer action
}
}
};
我們現在另外開1個線程類,我們可以想到,他需要幾個參數,handler+delay的長度(毫秒)+時間間隔(毫秒)+任務code,為了安全起見,我把context也加上了
public TimerThread(Context context, Handler handler, int delay,
int interval, int task_code) {
// TODO Auto-generated constructor stub
this.handler = handler;
mContext = context;
this.delay = delay;
this.interval = interval;
this.task_code = task_code;
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = task_code;
handler.sendMessage(msg);
}
}, delay, interval);// schedule(timerTask,delay duration,timer task duration)
}
是長這個模樣的
要調用timertask的時候,就
TimerThread timerThread = new TimerThread(this, handler,1000,1000,task_code);
timerThread.start();
想停止timer,就
timerThread.timer.cancel();
好了
代碼在這里:→http://download.csdn.net/detail/edwardwayne/8647501
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈