91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Rxjava實現輪詢定時器

發布時間:2020-09-13 12:26:33 來源:腳本之家 閱讀:255 作者:hgncxzy_ 欄目:移動開發

本文實例為大家分享了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方法取消訂閱。

致謝

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜良县| 招远市| 临沂市| 曲沃县| 平阳县| 红桥区| 冀州市| 阿图什市| 易门县| 石门县| 专栏| 万源市| 兴化市| 观塘区| 合肥市| 张掖市| 大洼县| 宜州市| 昭通市| 龙胜| 丰县| 南宁市| 什邡市| 庆城县| 宁陕县| 湟中县| 阿克陶县| 民丰县| 贵南县| 黄陵县| 昂仁县| 小金县| 东台市| 饶河县| 通海县| 金乡县| 武义县| 龙里县| 海口市| 三台县| 丹阳市|