RxJava实现实时更新时间 倒计时

RxJava属于观察者模式

首先定义一个订阅事件(Disposable)

private Disposable subsvcription;

实现一分钟更新一次获取时间的方法

public void getTime() {
        subscription = Observable.interval(0, 1, TimeUnit.SECONDS)
                .map(new Function<Long, Long>() {
                    @Override
                    public Long apply(Long aLong) throws Exception {
                        return aLong;
                    }
                })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        tvTime.setText(DateUtils.timeStamp2Date(System.currentTimeMillis(), "HH:mm"));
                    }
                });
    }

subscribeOn是事件执行的线程

observeOn是事件回调的线程

在页面关闭的时候 要取消订阅

@Override
    protected void onDestroy() {
        if (!subscription.isDisposed()) {
            subscription.dispose();
        }
        super.onDestroy();
    }

PS:获取时间的方法

public static String timeStamp2Date(long time, String format) {
        if (format == null || format.isEmpty()) {
            format = "yyyy-MM-dd HH:mm:ss";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new Date(time));
    }

倒计时

public void getTimeDown(String orderID){
        timeSubscription = Observable.interval(0L, 1L, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        long offset = 60 * 60 * 2 - aLong;
                        if (offset <= 0) {
                            //取消
                            if (timeSubscription != null){
                                if (!timeSubscription.isDisposed()) {
                                    timeSubscription.dispose();
                                }
                            }
                        }else {
                            //todo
                        }
                    }
                });
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值