private Subscription ms; public void downTime(){ final int count=60; ms= Observable.interval(0, 1, TimeUnit.SECONDS)//设置0延迟,每隔一秒发送一条数据 .take(count+1) //设置循环次数 .map(new Func1<Long, Long>() { @Override public Long call(Long aLong) { return count-aLong; // } }) .doOnSubscribe(new Action0() { @Override public void call() {//在发送数据的时候设置为不能点击//背景色设为灰色 vipView.downTimeView(1,0l); } }) .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程 .subscribe(new Observer<Long>() { @Override public void onCompleted() {//数据发送完后设置为原来的文字//数据发送完后设置为原来背景色 vipView.downTimeView(3,0l); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(Long aLong) { //接受到一条就是会操作一次UI // mSend.setText("剩余时间"+aLong+"秒"); vipView.downTimeView(2,aLong); } }); }
停止倒计时
if(!ms.isUnsubscribed()) { ms.unsubscribe(); vipView.downTimeView(4, 0l); }
unsubscribe()
: 这是
Subscriber
所实现的另一个接口
Subscription
的方法,用于取消订阅。