Android 三种实现定时器详解及实现方法
方法一:Handler+Thread
packagecom.xunfang.handerDemo;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.TextView;
/**
*handler定时器
*
*@authorSmalt
*
*/
publicclassHanderDemoActivityextendsActivity{
TextViewtvShow;
privateinti=0;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
newThread(newThreadShow()).start();
}
//handler类接收数据
Handlerhandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
if(msg.what==1){
tvShow.setText(Integer.toString(i++));
System.out.println("receive....");
}
};
};
//线程类
classThreadShowimplementsRunnable{
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
while(true){
try{
Thread.sleep(1000);
Messagemsg=newMessage();
msg.what=1;
handler.sendMessage(msg);
System.out.println("send...");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("threaderror...");
}
}
}
}
}
方法二:Handler类自带的postDelyed
packagecom.xunfang.handerDemo;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.widget.TextView;
/**
*handler定时器使用postDelyed实现
*
*@authorSmalt
*
*/
publicclassHanderDemoActivityextendsActivity{
TextViewtvShow;
privateinti=0;
privateintTIME=1000;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
handler.postDelayed(runnable,TIME);//每隔1s执行
}
Handlerhandler=newHandler();
Runnablerunnable=newRunnable(){
@Override
publicvoidrun(){
//handler自带方法实现定时器
try{
handler.postDelayed(this,TIME);
tvShow.setText(Integer.toString(i++));
System.out.println("do...");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("exception...");
}
}
};
}
方法三:Handler+Timer+TimerTask
packagecom.xunfang.handerDemo;
importjava.util.Timer;
importjava.util.TimerTask;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.TextView;
/**
*定时器实现:Handler+Timer+TimerTask
*
*@authorSmalt
*
*/
publicclassHanderDemoActivityextendsActivity{
TextViewtvShow;
privateinti=0;
privateintTIME=1000;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
timer.schedule(task,1000,1000);//1s后执行task,经过1s再次执行
}
Handlerhandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
if(msg.what==1){
tvShow.setText(Integer.toString(i++));
}
super.handleMessage(msg);
};
};
Timertimer=newTimer();
TimerTasktask=newTimerTask(){
@Override
publicvoidrun(){
//需要做的事:发送消息
Messagemessage=newMessage();
message.what=1;
handler.sendMessage(message);
}
};
}
以上就是对Android定时器的资料整理后续继续补充相关知识,谢谢大家对本站的支持!
