輕松實(shí)現(xiàn)Rxjava定時(shí)器功能
使用RxJava實(shí)現(xiàn)定時(shí)器功能可以通過兩種方式來實(shí)現(xiàn),具體實(shí)現(xiàn)如下:
一、使用 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中此功能已過時(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開始 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(); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java簡單實(shí)現(xiàn)定時(shí)器
- windows定時(shí)器配置執(zhí)行java jar文件的方法詳解
- java 定時(shí)器線程池(ScheduledThreadPoolExecutor)的實(shí)現(xiàn)
- Javaweb 定時(shí)器功能代碼實(shí)例
- Java線程Timer定時(shí)器用法詳細(xì)總結(jié)
- Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能
- 基于Rxjava實(shí)現(xiàn)輪詢定時(shí)器
- Java實(shí)現(xiàn)一個(gè)簡單的定時(shí)器代碼解析
- Java定時(shí)器Timer使用方法詳解
- Java 定時(shí)器的多種實(shí)現(xiàn)方式
相關(guān)文章
android 應(yīng)用退出時(shí)不播放動(dòng)畫的解決方法
在Android應(yīng)用中,默認(rèn)情況下,當(dāng)用戶點(diǎn)擊返回按鈕退出應(yīng)用時(shí),系統(tǒng)會為應(yīng)用添加一個(gè)默認(rèn)的退出動(dòng)畫效果,本文將介紹如何在Android應(yīng)用中禁止退出動(dòng)畫的播放,感興趣的朋友一起看看吧2024-05-05Android 網(wǎng)絡(luò)請求框架Volley實(shí)例詳解
這篇文章主要介紹了Android 網(wǎng)絡(luò)請求框架Volley實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06React Native 實(shí)現(xiàn)熱更新并自動(dòng)簽名打包功能
這篇文章主要介紹了React Native 實(shí)現(xiàn)熱更新并自動(dòng)簽名打包,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Android點(diǎn)亮屏幕或屏幕解鎖和鎖定以及其他相關(guān)權(quán)限實(shí)現(xiàn)代碼
本文將帶你實(shí)現(xiàn)Android屏幕解鎖和鎖定;Android屏幕常亮/點(diǎn)亮以及其他相關(guān)權(quán)限,感興趣的朋友可以參考下,希望本文對你有所幫助2013-01-01Android利用Glide獲取圖片真正的寬高的實(shí)例
本篇文章主要介紹了Android利用Glide獲取圖片真正的寬高的實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Android使用第三方庫實(shí)現(xiàn)日期選擇器
這篇文章主要為大家詳細(xì)介紹了Android使用第三方庫實(shí)現(xiàn)日期選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10Android 安全加密:消息摘要Message Digest詳解
本文主要介紹Android安全加密消息摘要Message Digest,這里整理了詳細(xì)的資料,并說明如何使用Message Digest 和使用注意事項(xiàng),有需要的小伙伴可以參考下2016-09-09Android開發(fā)中TextView 實(shí)現(xiàn)右上角跟隨文本動(dòng)態(tài)追加圓形紅點(diǎn)
這篇文章主要介紹了android textview 右上角跟隨文本動(dòng)態(tài)追加圓形紅點(diǎn)的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11