轻松实现Rxjava定时器功能

 更新时间:2018年06月28日 11:28:15   作者:MillerKevin  
这篇文章主要为大家详细介绍了Rxjava实现定时器功能的两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用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();
  }
 }

二、使用使用 intervaltake 操作符

在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();
  }
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android实现简易计算功能

    Android实现简易计算功能

    这篇文章主要为大家详细介绍了Android实现简易计算功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Android面试笔记之常问的Context

    Android面试笔记之常问的Context

    Android技术面试确实常常被问到Context,大概问题就是说说你对Context的理解吧,当时脑袋里浮现了是原来看到的文章片段乱说一通,这样还是不行的。平时还是多积累知识,深刻理解Context,在项目开发过程中也能避免一些陷入坑中。下面就来看看个人的一些总结吧。
    2016-12-12
  • Android4.X中SIM卡信息初始化过程详解

    Android4.X中SIM卡信息初始化过程详解

    这篇文章主要介绍了Android4.X中SIM卡信息初始化过程,较为详细的分析总结了Android4.X中SIM卡信息初始化的步骤及相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 详解Android Dialog对话框的五种形式

    详解Android Dialog对话框的五种形式

    这篇文章主要为大家详细介绍了Android对话框的五种形式,一般对话框,列表对话框,单选按钮对话框,多选按钮对话框,自定义对话框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android UI设计与开发之仿人人网V5.9.2最新版引导界面

    Android UI设计与开发之仿人人网V5.9.2最新版引导界面

    这篇文章主要为大家详细介绍了Android UI设计与开发之仿人人网V5.9.2最新版引导界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android自定义控件实现icon+文字的多种效果

    Android自定义控件实现icon+文字的多种效果

    这篇文章主要为大家详细介绍了Android自定义控件实现icon+文字的多种效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android基于TextView实现的跑马灯效果实例

    Android基于TextView实现的跑马灯效果实例

    这篇文章主要介绍了Android基于TextView实现的跑马灯效果,以完整实例形式分析了Android使用TextView通过属性设置及功能代码实现跑马灯效果的相关技巧,需要的朋友可以参考下
    2016-02-02
  • Android绘制动态折线图

    Android绘制动态折线图

    这篇文章主要为大家详细介绍了Android绘制动态折线图,折线图随着手指的滑动进行动态绘制效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Android实现高亮搜索功能的示例

    Android实现高亮搜索功能的示例

    这篇文章主要介绍了Android实现高亮搜索功能的示例,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-05-05
  • 基于Flutter实现图片选择和图片上传

    基于Flutter实现图片选择和图片上传

    Flutter 的图片选择插件很多,包括了官方的 image_picker,multi_image_picker(基于2.0出了 multi_image_picker2)等等。本文将利用这些插件实现图片选择和图片上传,需要的可以参考一下
    2022-03-03

最新评论