美文网首页
一个计时器的实现

一个计时器的实现

作者: 勤劳的蚂蚁 | 来源:发表于2020-03-10 18:03 被阅读0次

循环计时

private Subscription subscribe;//计时器对象-- 倒计时
private boolean isBiginCount=false;



    private void countDown(final int times) {
        isBiginCount=true;
        /*倒计时功能*/
        //0延迟  每隔1秒触发
        //设置循环次数
        //逐渐减一
        //执行过程中按键为不可点击状态() -> idTvCodeAcRegister.setClickable(false)
        //操作UI主要在UI线程
        //循环结束调用此方法
        //每隔一秒执行
        //不可点击
        subscribe = Observable.interval(1, TimeUnit.SECONDS) //0延迟  每隔1秒触发
                .take(times + 1) //设置循环次数
                .map(new Func1<Long, Long>() {
                    @Override
                    public Long call(Long aLong) {
                        return times - aLong;//逐渐减一
                    }
                })
                .doOnSubscribe(new Action0() {
                    @Override
                    public void call() {

                    }
                }) //执行过程中按键为不可点击状态() -> idTvCodeAcRegister.setClickable(false)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onCompleted() {//循环结束调用此方法
                     
                    }

                    @Override
                    public void onError(Throwable e) {
                        MyLog.wtf("houyl_tag","visitfragment +Observable"+e.getMessage());
                    }

                    @Override
                    public void onNext(Long aLong) {//每隔一秒执行
                        //不可点击
                        if (tv_time == null && getActivity() == null) {
                            return;
                        }
                        tv_time.setText(aLong + "s");
                    }
                });

    }


    private void cancelCountDown() {
        if (subscribe != null && !subscribe.isUnsubscribed()) {
            subscribe.unsubscribe();
            tv_time.setText(0 + "s");
        }
    }

普通计时

  private void countTime() {
        currentMillers = 0;
        String Minute;
        String seconds;
        subscribe = Observable.interval(0, 1, TimeUnit.SECONDS) //0延迟  每隔1秒触发
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程
                .subscribe(new Observer<Long>() {

                    @Override
                    public void onCompleted() {//循环结束调用此方法

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Long aLong) {//
                        currentMillers++;
                        time = TimeUtils.secToHMS(currentMillers * 1000);
                        Logger.e("houyl  time :" + time);
                        IPCallTime timeP = new IPCallTime(time);
                        if (ch != null) {
                            ch.setText(time);
                        }
                        RxBus.getInstance().post(timeP);
                    }
                });

    }

    private void cancelCountTime() {
        if (subscribe != null && !subscribe.isUnsubscribed()) {
            subscribe.unsubscribe();
        }

    }

相关文章

  • TCP的4个计时器

    大多数TCP至少实现使用4个计时器:重传计时器,持续计时器,保活计时器,TIME_WAIT计时器 1.重传计时器:...

  • js 动画

    通过计时器实现,坏处:动画未加载,计时器启动,影响性能 SVG 实现动画画布实现动画css3transition ...

  • iOS开发之UITableView中计时器的几种实现方式

    iOS开发之UITableView中计时器的几种实现方式 iOS开发之UITableView中计时器的几种实现方式

  • react-native 计时器

    计时器 计时器是一个应用程序的重要的一个组成部分,React Native 实现了Browser timers。计...

  • spring schedule的简单实现

    Schedule 关于spring一个计时器功能的实现spring 的计时器是非常好用的,非常方便,无需配置多少东...

  • 【融职培训】Web前端学习 第3章 JavaScript基础教程

    一、计时器方法概述 计时器方法可以实现在指定的时间过后,单次或重复调用函数的功能,setTimeout可以实现函数...

  • 一个计时器的实现

    循环计时 普通计时

  • 5.7 TCP的流量控制

    利用滑动窗口实现流量控制。 TCP为每个连接设有一个“持续计时器”,收到零窗口通知时,就启动计时器。时间到期,就发...

  • quick-cocos2d-x之Timer

    Moduleframework.client.api.Timer Timer 实现了一个计时器容器,用于跟踪应用中...

  • Chronometer计时器暂停问题

    问题描述: 当通过stop()方法实现计时器暂停时,在通过start()方法继续计时的时候,会出现计时器显示的时间...

网友评论

      本文标题:一个计时器的实现

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