您的位置:首页 > 移动开发 > Android开发

Android实现定时器的方法

2015-09-10 15:30 465 查看
一、Handler和Thread

packagecom.lstech.app;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.TextView;

/**
*handler定时器
*
*
*/
publicclassHandlerActivityextendsActivity{
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.lstech.app;


importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.widget.TextView;

/**
*handler定时器使用postDelyed实现
*
*/
publicclasspostDelyedActivityextendsActivity{
TextViewtvShow;
privateinti=0;
privateintDELYED=1000;

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
handler.postDelayed(runnable,DELYED);//每隔1s执行
}

Handlerhandler=newHandler();
Runnablerunnable=newRunnable(){

@Override
publicvoidrun(){
//handler自带方法实现定时器
try{
handler.postDelayed(this,DELYED);
tvShow.setText(Integer.toString(i++));
System.out.println("do...");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("exception...");
}
}
};

}


三、Handler+Timer+TimerTask

packagecom.lstech.app;

importjava.util.Timer;
importjava.util.TimerTask;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.TextView;

/**
*定时器实现
**
*/
publicclassTimerActivityextendsActivity{
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);
}
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: