android倒计时

使用RxAndroid实现倒计时功能

    private void timerCountDown() {
        Observable<Integer> observable = countdown(5);
        observable.doOnSubscribe(new Action0() {
            @Override
            public void call() {
                Log.i(TAG, "开始计时");
            }
        }).subscribe(new Subscriber<Integer>() {
            @Override
            public void onCompleted() {
                Log.i(TAG, "计时完成");
                intentToLauncher();
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG, "计时出错: " + e.getMessage());
            }

            @Override
            public void onNext(Integer integer) {
                Log.i(TAG, "当前计时:" + integer);
                timerText.setImageResource(secondsResId[integer - 1]);
            }
        });
    }
    public Observable<Integer> countdown(int time) {
        if (time < 0) time = 0;

        final int countTime = time;
        return Observable.interval(0, 1, TimeUnit.SECONDS)
                .subscribeOn(AndroidSchedulers.mainThread())
                .observeOn(AndroidSchedulers.mainThread())
                .map(new Func1<Long, Integer>() {
                    @Override
                    public Integer call(Long increaseTime) {
                        return countTime - increaseTime.intValue();
                    }
                })
                .take(countTime);
    }