Android中几种常用的定时器

2019-09-15 17:43:59

参考地址 Android中几种常用的定时器

一、三种常用的定时器

1.Handler类的postDelayed方法:

    final 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方法:

    final 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方法:

   final 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 timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            //do something
        }
    },1000);//延时1s执行

3.Thread方法:

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(1000);//延时1s
                //do something
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();

自带定时器 CountDownTimer

      CountDownTimer  countDownTimer = new CountDownTimer(totalTime, 2000) {
            @Override
            public void onTick(long millisUntilFinished) {
                updateFileData(fileId);  //执行任务
            }

            @Override
            public void onFinish() {
                if (User.getInstance().isLoginIng()) {
                    if (countDownTimer != null) {
                        countDownTimer.start();
                    }
                }
            }
        };
        countDownTimer.start();


  • 2019-03-06 11:24:19

    MySQL查看数据库表容量大小

    本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用。

  • 2019-03-13 09:38:11

    写入MySQL报错超出 max_allowed_packet 的问题

    MySQL会根据配置文件会限制server接受的数据包的大小。如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。

  • 2019-03-15 15:28:33

    10分钟教你搭建自己的ngrok服务器

    内网穿透想必开发过微信的同志都很了解,大部分人选择网上寻找各种现成的,比如ngrok官网、ittun-ngrok、sunny-ngrok或者花生壳之类的。但是世界上没有免费的午餐,要不就是收费,要不就是免费但是偶尔会出现连接失败的问题(当然大多数时间是没有问题的)。

  • 2019-03-15 15:29:53

    丢弃花生壳,搭建自己的ngrok作为内网穿透服务器

    公司没有公网,公司在二级路由下面(就是服务商没有给独立IP,也无法动态获取公网IP),然而公司在开发程序的时候,如对接微信等需要返回数据,或者需要别人能访问我们网址,一般我们就只能购买花生壳内网穿透,但是在使用中发现速度慢,经常掉。所以搭建自己的ngrok服务器来保证内网穿透。

  • 2019-03-15 15:31:21

    内网穿透 ngrok 服务器和客户端配置

    ngrok 简介及作用 ngrok 是一款用 go 语言开发的开源软件,它是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。下图简述了 ngrok 的原理。