• 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();
    

      

  • 相关阅读:
    今天才明白VC++.net的含义: VS系列的c++编译器可以支持托管C++(类似于C#,具体请看MS在线文档),当然包括winform界面开发。
    转:ArcEngine10.0+VS2010+MFC 扫盲贴 .
    在Arcmap中加载互联网地图资源的4种方法
    JSON Web Token
    介子 官网
    Spring read-only="true" 只读事务的
    idea 修改 使用的git账号
    Redis原子计数器incr
    mysql where执行顺序
    GitLab 汉化
  • 原文地址:https://www.cnblogs.com/yc123456/p/7750309.html
Copyright © 2020-2023  润新知