利用Timer和Handler来实现多次重复执行同一段程序的过程。
结合代码块,按顺序如下:
首先,定义实例。
private Timer mTimer = null;
private TimerTask mTimerTask = null;
private boolean isStart = true;
private int is_id=0;先对timer和timertask进行判断
private void startTimer(){
Log.i(TAG, "startTimer,开始测试!");
if (mTimer == null) {
mTimer = new Timer();
}
if (mTimerTask == null) {
mTimerTask = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 16;
testHandler.sendMessage(message);
/* 设置多少次之后timer结束,停止循环,n是要循环的次数*/
if (is_id == n){
isStart = true;
stopTimer();
}
}
};
}
/* 如果mTimer与mTimerTask都不为空,则执行循环测试,延迟1秒开始以每1秒进行的循环*/
if(mTimer != null && mTimerTask != null )
mTimer.schedule(mTimerTask, 1000, 1000);
}用于停止timer和timertask的代码:
private void stopTimer(){
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
if (mTimerTask != null) {
mTimerTask.cancel();
mTimerTask = null;
}
is_id = 0;
}定义一个handler来执行需要循环执行的代码块
Handler testHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//这里放要循环执行的代码!
is_id++;
}
};下面的代码我是在按钮点击事件中添加的,这样可以实现点击一次,每隔1秒执行代码段,执行完n次后,再点击按钮,可以继续实现循环执行。
isStart = !isStart;
if (!isStart){
startTimer();
}else {
stopTimer();
}版权声明:本文为Allisonton原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。