安卓循环遍历计时器

计时器循环遍历

计时器的使用 我习惯两种方式如下:

第一种使用 handler:
1,初始化 声明

  public static final int REGULAR_TIME =  1000;  //1秒 时间间隔

    private Handler mUiHandler;

    private int index=0;

    Runnable runnable = new Runnable() {
    
    
        @Override
        public void run() {
    
    
            //要执行的任务
            aaa();
            mUiHandler.postDelayed(this , REGULAR_TIME); //循环执行
        }
    };

2,初始化

mUiHandler = new Handler(Looper.getMainLooper(), new Handler.Callback() {
    
    
            @Override
            public boolean handleMessage(@NonNull Message msg) {
    
    
                Log.d("info","发送消息");
                return false;
            }
        });

3,执行方法

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
    
    
        @Override
        public void onClick(View v) {
    
    

            //可以先执行一次
            aaa();


        }
    });
        private void aaa() {
    
    

    if(index==10){
    
    
        Log.d("info","停止遍历");
        mUiHandler.removeCallbacks(runnable);
    }else {
    
    
        Log.d("info","叠加数据 继续遍历");
        index++;
        //1小时后开启定时循环执行
        mUiHandler.postDelayed(runnable,REGULAR_TIME);
    }
}

ok 以上就是hanlder的使用。

第二种是使用 timer和TimerTask相互结合使用如下:
1, 声明

 private TimerTask mTimerTask;
    private Timer mTimer;
    private int currentTime = 0;

2,初始化方法

   private void initTimer() {
    
    
        //30s倒计时
        mTimerTask = new TimerTask() {
    
    
            @Override
            public void run() {
    
    

                currentTime = currentTime + 1;
                Log.d("mawl", "视频界面时间记录定时器==" + currentTime);

                if (tv_time != null) {
    
    
                    runOnUiThread(new Runnable() {
    
    
                        @Override
                        public void run() {
    
    
                            tv_time.setText(currentTime + "秒");
                        }
                    });
                }
            }
        };
        mTimer = new Timer();
    }

3,执行计时方法

 //切换每个的组件时clear 为0
    protected void initCurrentTime() {
    
    
        currentTime = 0;
        startTime();
    }
  /**
     * 开始倒计时
     */
    protected void startTime() {
    
    
        //倒计时时间
        destroyTimer();
        initTimer();
        mTimer.schedule(mTimerTask, 0, 1000);
    }

4,在ondestory时候执行销毁:

 /**
     * destory上次使用的
     */
    protected void destroyTimer() {
    
    

        if (mTimer != null) {
    
    
            mTimer.cancel();
            mTimer = null;
        }
        if (mTimerTask != null) {
    
    
            mTimerTask.cancel();
            mTimerTask = null;
        }
    }

ok 以上就是我的两个计时方法。

猜你喜欢

转载自blog.csdn.net/mawlAndroid/article/details/133342481