基于Rxjava實(shí)現(xiàn)輪詢定時(shí)器
本文實(shí)例為大家分享了Rxjava實(shí)現(xiàn)輪詢定時(shí)器的具體代碼,供大家參考,具體內(nèi)容如下
作用
1、實(shí)現(xiàn)了延遲若干毫秒后,執(zhí)行next操作,只執(zhí)行一次
2、實(shí)現(xiàn)了每隔若干毫秒后,執(zhí)行next操作,可執(zhí)行多次
工具類源碼
/** * Copyright 2015-2018 Hive Box. */ package com.fcbox.locker.shrail.utils; import android.support.annotation.NonNull; import com.fcbox.locker.sdk.Locker; import com.fcbox.locker.sdk.log.LogUtils; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; /** * Rxjava2.x實(shí)現(xiàn)輪詢定時(shí)器. * * @author xuzhuyun */ public class RxTimerUtil { private static Disposable mDisposable; /** * milliseconds毫秒后執(zhí)行next操作 */ public static void timer(long milliseconds, final IRxNext next) { Observable.timer(milliseconds, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Long>() { @Override public void onSubscribe(@NonNull Disposable disposable) { mDisposable = disposable; } @Override public void onNext(@NonNull Long number) { if (next != null) { next.doNext(number); } } @Override public void onError(@NonNull Throwable e) { //取消訂閱 cancel(); } @Override public void onComplete() { //取消訂閱 cancel(); } }); } /** * 每隔milliseconds毫秒后執(zhí)行next操作 */ public static void interval(long milliseconds, final IRxNext next) { Observable.interval(milliseconds, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Long>() { @Override public void onSubscribe(@NonNull Disposable disposable) { mDisposable = disposable; } @Override public void onNext(@NonNull Long number) { if (next != null) { next.doNext(number); } } @Override public void onError(@NonNull Throwable e) { } @Override public void onComplete() { } }); } /** * 取消訂閱 */ public static void cancel() { if (mDisposable != null && !mDisposable.isDisposed()) { mDisposable.dispose(); LogUtils.e("====Rx定時(shí)器取消======"); } } public interface IRxNext { void doNext(long number); } }
調(diào)用
調(diào)用時(shí)相應(yīng)的類需要實(shí)現(xiàn)IRxNext接口,在doNext方法中實(shí)現(xiàn)自己的邏輯即可。另外記得用完后調(diào)用cancel方法取消訂閱。
致謝
原文出處已經(jīng)找不到了,在此感謝原作者。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java?常規(guī)輪詢長輪詢Long?polling實(shí)現(xiàn)示例詳解
- Java實(shí)現(xiàn)一個(gè)簡單的長輪詢的示例代碼
- Java servlet通過事件驅(qū)動進(jìn)行高性能長輪詢詳解
- Java?輪詢鎖使用時(shí)遇到問題解決方案
- Java?死鎖解決方案順序鎖和輪詢鎖
- Java實(shí)現(xiàn)平滑加權(quán)輪詢算法之降權(quán)和提權(quán)詳解
- Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢
- Java如何使用ReentrantLock實(shí)現(xiàn)長輪詢
- Java 利用DeferredResult實(shí)現(xiàn)http輪詢實(shí)時(shí)返回?cái)?shù)據(jù)接口
- 告別無盡等待:Java中的輪詢終止技巧
相關(guān)文章
Android基于TextView屬性android:ellipsize實(shí)現(xiàn)跑馬燈效果的方法
這篇文章主要介紹了Android基于TextView屬性android:ellipsize實(shí)現(xiàn)跑馬燈效果的方法,涉及Android跑馬燈效果所涉及的TextView相關(guān)屬性與使用方法,需要的朋友可以參考下2016-08-08Android?ViewPager2?+?Fragment?聯(lián)動效果的實(shí)現(xiàn)思路
這篇文章主要介紹了Android?ViewPager2?+?Fragment?聯(lián)動,本篇主要介紹一下 ViewPager2 + Fragment聯(lián)動效果的實(shí)現(xiàn)思路,需要的朋友可以參考下2022-12-12Android?Studio實(shí)現(xiàn)簡單補(bǔ)間動畫
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)簡單補(bǔ)間動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Android 通過Base64上傳圖片到服務(wù)器實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了Android 通過Base64上傳圖片到服務(wù)器實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05Android 限制顯示小數(shù)點(diǎn)后兩位的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Android 限制顯示小數(shù)點(diǎn)后兩位的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01