一、Handler实现延迟执行
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO
}
}, 5000);
二、Timer定时器
Timer time=new Runtime();
TimerTask task=new TimerTask() {
@Override
public void run() {
//TODO
}
};
time.schedule(task,5000);//5秒后执行
time.schedule(task,3000,5000);//3秒后每隔5秒执行一次
time.cancel();//销毁
三、Thread.sleep
try {
Thread.sleep(5000);
//TODO
} catch (InterruptedException e) {
e.printStackTrace();
}
Android - 每隔一定时间重复执行(定时器)
private Timer timer;
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//使用handler发送消息
Message message=new Message();
message.what=0;
mHandler.sendMessage(message);
}
},0,1000);//每隔一秒使用handler发送一下消息,也就是每隔一秒执行一次,一直重复执行
项目中遇到一种需求,如果boolean值isRegister为true时,需要不断地执行一段延时做的逻辑,实现方式用Handler+runnable
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
if (isRegister){
/*执行一段逻辑*/
// add your code;
handler.postDelayed(this,500);//延时五百毫秒,再次执行这个runnable,如果isRegister为false了就停止执行了
}
}
};
//然后在你初次调起这个延时逻辑的地方调用以下语句:
handler.postDelayed(runnable,500);//延时五百毫秒,执行runnable
Android循环执行某一段代码
方法一:Handler.postDelayed实现
1、执行循环的函数如下:
private Handler handler = new Handler();
private Runnable task = new Runnable() {
public void run() {
// TODO Auto-generated method stub
handler.postDelayed(this,5*1000);//设置循环时间,此处是5秒
//需要执行的代码
}
};
2、调用的代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
handler.postDelayed(task,5000);//延迟调用
handler.post(task);//立即调用
}
1.TimerTask实例
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
};
Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
//需要循环执行的代码
break;
default:
break;
}
};
};
2.调用方式
mTimer = new Timer();
//5s响一次
mTimer.schedule(timerTask, 0, 5000);
1
2
3
3.onDestroy()处理
protected void onDestroy() {
super.onDestroy();
mTimer.cancel();
};