1、Timer和TimerTask
private int recLen = 11;
Timer timer = new Timer();
timer.schedule(task, 1000, 1000);
TimeTask task = new TimerTask(){
@override
public void run() {
runOnUIThread(new Runnable(){
@override
public void run() {
recLen--;
Syso(""+recLen);
if(recLen<0){
timer.cancel();
}
}
});
}
};
2、TimerTask和Handler,不使用Timer
private int recLen = 11;
Timer timer = new Timer();
timer.schdule(task, 1000. 1000);
TimerTask task = new TimerTask() {
@override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
final Handler handler = new Handler(){
public void handlerMessage(Message msg) {
switch(msg.what){
case 1:
Syso(""+recLen);
if(recLen<0){
timer.cancel();
}
break;
}
}
};
3、Handler与Message,不使用TimerTask
private int recLen = 11;
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000);
final Hadnler handler = new Handler(){
public void handlerMessage(Message msg) {
switch(msg.what){
case 1:
recLean--;
if(recLen <0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000);
} else {
}
break;
}
super.handlerMessage(msg);
}
};
4、Handler与Thread,不占用UI线程
private int recLen = 11;
new Thread(new MyThread()).start();
final Handler handler = new Handler() {
public void handlerMessage(Message msg){
switch(msg.what) {
case 1:
recLen--;
break;
}
super.handlerMessage(msg);
}
};
public class MyThread implements Runnable {
@override
public void run() {
while(true){
try{
Thread.sleep(1000);
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
} catch (Exception e){}
}
}
}
5、Handler与Runnable, 最简单
private int recLen = 11;
runnable.run();
Handler handler = new Handler();
Runnable runnable = new Runnable(){
@override
public void run(){
recLen--;
handler.postDelayed(this, 1000);
}
};