您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何實(shí)現(xiàn)一個(gè)Rxjava定時(shí)器功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、使用 timer 操作符
private Disposable mDisposable; /** * 啟動(dòng)定時(shí)器 */ 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)閉定時(shí)器 */ public void closeTimer(){ if (mDisposable != null) { mDisposable.dispose(); } }
二、使用使用 interval 和 take 操作符
在1.x 中 timer 可以執(zhí)行間隔邏輯,在2.x中此功能已過(guò)時(shí),交給了 interval 操作符,當(dāng)然只使用 interval 還不能實(shí)現(xiàn)定時(shí)器功能,必須再結(jié)合take 操作符。具體代碼如下:
private Disposable mDisposable; /** * 啟動(dòng)定時(shí)器 */ public void startTime() { int count_time = 10; //總時(shí)間 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開(kāi)始 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)閉定時(shí)器 */ public void closeTimer(){ if (mDisposable != null) { mDisposable.dispose(); } }
上述就是小編為大家分享的如何實(shí)現(xiàn)一個(gè)Rxjava定時(shí)器功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。