通過(guò)實(shí)際項(xiàng)目的練習(xí)艳丛,掌握了幾種android基本定時(shí)器和延時(shí)的用法复罐,這里我想總結(jié)一下作為自己的收獲涝登,下面列出的是比較簡(jiǎn)潔的模式,方便簡(jiǎn)單地在程序中直接調(diào)用市栗。
一缀拭、三種常用的定時(shí)器
1.Handler類(lèi)的postDelayed方法:
Handler mHandler = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
//do something
//每隔1s循環(huán)執(zhí)行run方法
mHandler.postDelayed(this, 1000);
}
};
主線程中調(diào)用: mHandler.postDelayed(r, 100);//延時(shí)100毫秒</pre>
2.用handler+timer+timeTask方法:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1){
//do something
}
super.handleMessage(msg);
}
};
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
主線程中調(diào)用:timer.schedule(timerTask,1000,500);//延時(shí)1s咳短,每隔500毫秒執(zhí)行一次run方法
3.Thread+handler方法:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1){
//do something
}
super.handleMessage(msg);
}
};
class MyThread extends Thread {//這里也可用Runnable接口實(shí)現(xiàn)
@Override
public void run() {
while (true){
try {
Thread.sleep(1000);//每隔1s執(zhí)行一次
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
主線程中調(diào)用:new Thread(new MyThread()).start();