輕松實(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();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java簡(jiǎn)單實(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è)簡(jiǎn)單的定時(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)會(huì)為應(yīng)用添加一個(gè)默認(rèn)的退出動(dòng)畫效果,本文將介紹如何在Android應(yīng)用中禁止退出動(dòng)畫的播放,感興趣的朋友一起看看吧2024-05-05
Android 網(wǎng)絡(luò)請(qǐng)求框架Volley實(shí)例詳解
這篇文章主要介紹了Android 網(wǎng)絡(luò)請(qǐng)求框架Volley實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
React Native 實(shí)現(xiàn)熱更新并自動(dòng)簽名打包功能
這篇文章主要介紹了React Native 實(shí)現(xiàn)熱更新并自動(dòng)簽名打包,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Android點(diǎn)亮屏幕或屏幕解鎖和鎖定以及其他相關(guān)權(quán)限實(shí)現(xiàn)代碼
本文將帶你實(shí)現(xiàn)Android屏幕解鎖和鎖定;Android屏幕常亮/點(diǎn)亮以及其他相關(guān)權(quán)限,感興趣的朋友可以參考下,希望本文對(duì)你有所幫助2013-01-01
Android利用Gson解析嵌套多層的Json的簡(jiǎn)單方法
下面小編就為大家?guī)硪黄狝ndroid利用Gson解析嵌套多層的Json的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
Android利用Glide獲取圖片真正的寬高的實(shí)例
本篇文章主要介紹了Android利用Glide獲取圖片真正的寬高的實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
Android使用第三方庫實(shí)現(xiàn)日期選擇器
這篇文章主要為大家詳細(xì)介紹了Android使用第三方庫實(shí)現(xiàn)日期選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Android 安全加密:消息摘要Message Digest詳解
本文主要介紹Android安全加密消息摘要Message Digest,這里整理了詳細(xì)的資料,并說明如何使用Message Digest 和使用注意事項(xiàng),有需要的小伙伴可以參考下2016-09-09
Android開發(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

