国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

基于Rxjava實現輪詢定時器

2019-10-21 21:49:17
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Rxjava實現輪詢定時器的具體代碼,供大家參考,具體內容如下

作用

1、實現了延遲若干毫秒后,執行next操作,只執行一次

2、實現了每隔若干毫秒后,執行next操作,可執行多次

工具類源碼

/** * 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實現輪詢定時器. * * @author xuzhuyun */public class RxTimerUtil { private static Disposable mDisposable; /**  * milliseconds毫秒后執行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毫秒后執行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定時器取消======");  } } public interface IRxNext {  void doNext(long number); }}

調用

調用時相應的類需要實現IRxNext接口,在doNext方法中實現自己的邏輯即可。另外記得用完后調用cancel方法取消訂閱。

致謝

原文出處已經找不到了,在此感謝原作者。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大名县| 日喀则市| 资源县| 鄂伦春自治旗| 兴仁县| 台州市| 丰宁| 夏河县| 高州市| 华池县| 正蓝旗| 虹口区| 东辽县| 莆田市| 潜江市| 伊川县| 乌审旗| 阿克| 瑞丽市| 理塘县| 罗定市| 阜平县| 皋兰县| 郎溪县| 津市市| 行唐县| 福州市| 湖北省| 罗城| 西丰县| 电白县| 郧西县| 犍为县| 施甸县| 开远市| 台南县| 阿克陶县| 固镇县| 闽清县| 贡觉县| 黑水县|