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

利用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版权协议,转载请附上原文出处链接和本声明。