zoukankan      html  css  js  c++  java
  • Android计时器

    1.Handler类的postDelayed方法:
    
             Handler mHandler = new Handler();
                     Runnable r = new Runnable() {
    
                        @Override
                        public void run() {
                                //do something
                                //每隔1s循环执行run方法
                                mHandler.postDelayed(this, 1000);
                        }
                    };
    
    
    主线程中调用:  mHandler.postDelayed(r, 100);//延时100毫秒
    
    2.用handler+timer+timeTask方法:
    
          Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 1){
                    //do something
                }
                super.handleMessage(msg);
            }
        };
    
        Timer timer = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                Message message = new Message();
                message.what = 1;
                handler.sendMessage(message);
            }
        };
     主线程中调用:timer.schedule(timerTask,1000,500);//延时1s,每隔500毫秒执行一次run方法
    
    3.Thread+handler方法:
    
     Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 1){
                    //do something
                }
                super.handleMessage(msg);
    
            }
        };
    
        class MyThread extends Thread {//这里也可用Runnable接口实现
            @Override
            public void run() {
                while (true){
                    try {
                        Thread.sleep(1000);//每隔1s执行一次
                        Message msg = new Message();
                        msg.what = 1;
                        handler.sendMessage(msg);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                }
            }
        }
    主线程中调用:new Thread(new MyThread()).start();
    二、三种延时的快捷方法: 
    1.Handler的postDelayed方法:
    
    new Handler().postDelayed(new Runnable() {
    
            @Override
            public void run() {
                  //do something
              }
           }, 1000);    //延时1s执行
    
    2.timer + TimerTask方法:
    
                     timer = new Timer();
                     timer.schedule(new TimerTask() {                   
                        @Override
                        public void run() {
                              //do something
                        }
                    },1000);//延时1s执行
    
    3.Thread方法:
    
            new Thread(new MyThread()).start();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);//延时1s
                        //do something
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
    

      

  • 相关阅读:
    Windows下 flex + bison 小例子
    MongoDB 启动基于角色的登录认证功能
    多线程中数的原子性加减
    pymongo.errors.OperationFailure: Authentication failed.
    Windows 中 . 和 .. 的区别
    CString常用函数
    string常用函数
    回调函数 小例子
    VS2008兼容安装
    测试代码的执行时间魔法方法%time和%timeit
  • 原文地址:https://www.cnblogs.com/yc123456/p/7750309.html
Copyright © 2011-2022 走看看