美文网首页
android 倒计时的几种实现方式

android 倒计时的几种实现方式

作者: 杰奎琳子 | 来源:发表于2020-06-08 10:15 被阅读0次

1.Handler

  mTime.setText(times + "s");

    Message obtain = Message.obtain();

    obtain.what = 99;

    handler.sendMessageDelayed(obtain, 1000);

    int times = 5;

    Handler handler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            switch (msg.what) {

                case 99:

                    times--;

                    mTime.setText(times + "s");

                    if (times <= 0) {

                        startActivity(new Intent(MainActivity.this, Main2Activity.class));

                        return;

                    } else {

                        Message obtain = Message.obtain();

                        obtain.what = 99;

                        handler.sendMessageDelayed(obtain, 1000);

                    }

                    break;

            }

        }

    };

2.TimerTask

    timer = new Timer();

        timer.schedule(new TimerTask() {

            @Override

            public void run() {

                Log.d(TAG, "run: "+(Looper.myLooper()==Looper.getMainLooper()));

                    runOnUiThread(new Runnable() {

                        @Override

                        public void run() {

                            mTime.setText(times + "s");

                            times--;

                            if (times==0){

                            }

                        }

                    });

            }

        },0,1000);

3.CountDownTimer

        new CountDownTimer(5000,1000){

            @Override

            public void onTick(long millisUntilFinished) {

                Log.d(TAG, "onTick: "+millisUntilFinished);

            }

            @Override

            public void onFinish() {

                Log.d(TAG, "onFinish: ");

            }

        }.start();

4.Rxjava

    /**

        * 第一个参数:初次延时

        * 第二个参数:周期

        * 第三个参数:时间单位

        */

        Observable.interval(1, 1, TimeUnit.SECONDS)

                .take(4)

                .subscribe(new Observer<Long>() {

                    @Override

                    public void onSubscribe(Disposable d) {

                        Log.d(TAG, "onSubscribe: ");

                    }

                    @Override

                    public void onNext(Long aLong) {

                        Log.d(TAG, "onNext: " + aLong);

                    }

                    @Override

                    public void onError(Throwable e) {

                    }

                    @Override

                    public void onComplete() {

                    }

                });

相关文章

网友评论

      本文标题:android 倒计时的几种实现方式

      本文链接:https://www.haomeiwen.com/subject/nwfltktx.html