RxJava-Android计时器、倒计时获取验证码 OR 其它需要计数的操作

Android计时器、倒计时获取验证码 OR 其它需要计数的操作

    // 0秒延迟,1秒后计步器+1
    Observable.interval( 0,1,TimeUnit.SECONDS)
            .take( count+1 ) // 默认是从10开始的10 9 8 7 6 5 4 3 2 ## 1是不会执行的,为啥呢,因为到1的时候就已经走完了,应该去更新UI了,所以做一个+1的处理 
            .map(new Func1() {
                @Override
                public Long call(Long aLong) { // 利用map转换下,把1 2 3 4 5 倒置过来变成 10 9 8 7 6 5 
                    return count - aLong;
                }
            }).doOnSubscribe(new Action0() { // 当计时器开始的时候
                @Override
                public void call() {
                    button.setEnabled( false );
                }
            }).observeOn(AndroidSchedulers.mainThread()) // 计时器默认是跑在子线程的,所以需要切换线程
            .subscribe(new Subscriber() {
                @Override
                public void onCompleted() { // 结束时
                    button.setEnabled( true );
                    button.setText( "重新发送" );
                }
                @Override
                public void onError(Throwable e) {
                    e.printStackTrace();
                }
                @Override
                public void onNext(Long aLong) {
                    button.setText( "aaa " + aLong );
                }
    });

你可能感兴趣的:(RxJava-Android计时器、倒计时获取验证码 OR 其它需要计数的操作)