Timer+Handler组合实现定时循环执行代码操作

来源:互联网 发布:耳机推荐 知乎 编辑:程序博客网 时间:2024/05/21 07:01
利用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();}