輕松實現(xiàn)Rxjava定時器功能
使用RxJava實現(xiàn)定時器功能可以通過兩種方式來實現(xiàn),具體實現(xiàn)如下:
一、使用 timer 操作符
private Disposable mDisposable;
/**
* 啟動定時器
*/
public void startTime() {
Observable.timer(10, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable = d;
}
@Override
public void onNext(Long value) {
//Log.d("Timer",""+value);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
// TODO:2017/12/1
closeTimer();
}
});
}
/**
* 關(guān)閉定時器
*/
public void closeTimer(){
if (mDisposable != null) {
mDisposable.dispose();
}
}
二、使用使用 interval 和 take 操作符
在1.x 中 timer 可以執(zhí)行間隔邏輯,在2.x中此功能已過時,交給了 interval 操作符,當然只使用 interval 還不能實現(xiàn)定時器功能,必須再結(jié)合take 操作符。具體代碼如下:
private Disposable mDisposable;
/**
* 啟動定時器
*/
public void startTime() {
int count_time = 10; //總時間
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(count_time+1)//設(shè)置總共發(fā)送的次數(shù)
.map(new Function<Long, Long>() {
@Override
public Long apply(Long aLong) throws Exception {
//aLong從0開始
return count_time-aLong;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable = d;
}
@Override
public void onNext(Long value) {
//Log.d("Timer",""+value);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
// TODO:2017/12/1
closeTimer();
}
});
}
/**
* 關(guān)閉定時器
*/
public void closeTimer(){
if (mDisposable != null) {
mDisposable.dispose();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Android平臺JSON預(yù)覽(JSON-handle)
這篇文章主要介紹了Android平臺JSON預(yù)覽(JSON-handle),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
android service實現(xiàn)循環(huán)定時提醒功能
這篇文章主要為大家詳細介紹了android service實現(xiàn)循環(huán)定時提醒功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
Android自定義View實現(xiàn)數(shù)獨游戲
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)數(shù)獨游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12

