• 安卓循环遍历计时器


    计时器循环遍历

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

    第一种使用 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); //循环执行
            }
        };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2,初始化

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

    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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    ok 以上就是hanlder的使用。

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

     private TimerTask mTimerTask;
        private Timer mTimer;
        private int currentTime = 0;
    
    • 1
    • 2
    • 3

    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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3,执行计时方法

     //切换每个的组件时clear 为0
        protected void initCurrentTime() {
            currentTime = 0;
            startTime();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
      /**
         * 开始倒计时
         */
        protected void startTime() {
            //倒计时时间
            destroyTimer();
            initTimer();
            mTimer.schedule(mTimerTask, 0, 1000);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4,在ondestory时候执行销毁:

     /**
         * destory上次使用的
         */
        protected void destroyTimer() {
    
            if (mTimer != null) {
                mTimer.cancel();
                mTimer = null;
            }
            if (mTimerTask != null) {
                mTimerTask.cancel();
                mTimerTask = null;
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

  • 相关阅读:
    python入门教程 3
    谁拥有穿越周期的眼光?
    跨域问题详解:CORS问题+解决办法
    D如何检查null
    47、Python绘图
    【Arduino+ESP32专题】Arduino时间控制函数
    【重学C++】03 | 手撸C++智能指针实战教程
    C++敲桌子游戏
    SpringBoot:通过WebMvcConfigurer来动态修改请求映射
    JAVA 自定义 EventListenerManager解耦
  • 原文地址:https://blog.csdn.net/mawlAndroid/article/details/133342481