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