• 安卓循环遍历计时器


    计时器循环遍历

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

    第一种使用 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 以上就是我的两个计时方法。

  • 相关阅读:
    企业文件传输使用网盘好还是大文件传输软件好?
    Matlab:在键入时检查语法
    STM32实现USB转TTL串口工具
    Centos 7 下配置Samba服务
    免费下载 | ContextCapture分块OBJ模型合并与裁剪
    基于springboot的高校失物招领系统毕业设计源码111731
    【1day】用友GRP-U8 OA slbmbygr.jsp接口SQL注入漏洞学习
    设计模式-创建型模式
    生成数字图像基本过程
    OMS1664_ OMS1654_ OMS1644_ OMS1634_马可尼 2.5G-10Gb/s
  • 原文地址:https://blog.csdn.net/mawlAndroid/article/details/133342481