功能:進行倒計時。
直接上代碼,具體說明寫在注釋里面了。
//開始倒計時
final int count = 3;//倒計時3秒
Observable.interval(0, 1, TimeUnit.SECONDS)//延遲0,間隔1s,單位秒
.take(count + 1)//限制發(fā)射次數(shù)(因為倒計時要顯示 3 2 1 0 四個數(shù)字)
//使用map將數(shù)字轉(zhuǎn)換,這里aLong是從0開始增長的,所以減去aLong就會輸出3 2 1 0這種樣式
.map(new Function<Long, Long>() {
@Override
public Long apply(Long aLong) throws Exception {
return count - aLong;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long num) {
//接收到消息,這里需要判空,因為3秒倒計時中間如果頁面結(jié)束了,會造成找不到 tvAdCountDown
if (tvAdCountDown != null) {
tvAdCountDown.setText(String.format(tvAdStringFormat, num));
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
//完成之后跳轉(zhuǎn)到主頁面
startMainActivity();
}
});