前言

由于现在网络层已经升级到RxJava2.x相关的了,所以需要做些调整。虽然RxJava1.x和RxJava2.x同属RxJava系列,但由于RxJava2.x部分代码的重写,导致RxJava2.x与RxJava1.x已是两个不同的版本,RxJava2.x在性能上更优,尤其在背压支持上。当然,此篇重点不在Rx版本上的区别,有兴趣的同学可以自行研究。当然,2.x之于1.x的区别之一是2.x中已经没有 Subscription mSubscription, Observable.create()等方法也不再返回 Subscription对像,取而代之的是在 new Observer()方法中会多返回一个
onSubscribe(@NonNull Disposable disposable) 方法,而Disposable disposable即时我们取消订阅要用到的对象,其方法有:
package io.reactivex.disposables;
/**
* Represents a disposable resource.
*/
public interface Disposable {
/**
* Dispose the resource, the operation should be idempotent.
*/
void dispose();
/**
* Returns true if this resource has been disposed.
* @return true if this resource has been disposed
*/
boolean isDisposed();
}
dispose():取消订阅
isDisposed():判断订阅是否已经取消
ok,有了这些铺垫之后,我们进入正题。
第一步,导入RxJava2.x依赖包
//rxjava2.x compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.0'
第二步,直接上定时器类RxTimerUtil代码
/**
* Instruction:Rxjava2.x实现定时器
* <p>
* Author:pei
* Date: 2017/6/29
* Description:
*/
public class RxTimerUtil {
private static Disposable mDisposable;
/** milliseconds毫秒后执行next操作
*
* @param milliseconds
* @param 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操作
*
* @param milliseconds
* @param 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();
LogUtil.e("====定时器取消======");
}
}
public interface IRxNext{
void doNext(long number);
}
}
需要注意的是,若你使用的是延时执行一次的话,在调用 timer 后,不需要 cancel,因为我在代码中已经处理好了,
如果是调用的重复执行的方法,你需要在activity的ondestroy方法中取消订阅,类似如下:
@Override
protected void onDestroy(){
//取消定时器
RxTimerUtil.cancel();
LogUtil.e("====cancel====="+ DateUtil.getNowTime());
super.onDestroy();
}
多么简单粗暴,好了,今天就讲到这里吧,希望对大家的学习有所帮助,也希望大家多多支持。
# RxJava实现定时器
# RxJava
# 定时器
# java当中的定时器的4种使用方式
# Java定时任务的三种实现方法
# Java中指定时区的3种方法
# Java定时器Timer使用方法详解
# Java定时任务的三种实现方式
# java定时调度器(Quartz)使用实例
# Java 定时器(Timer
# TimerTask)详解及实例代码
# java定时任务Timer和TimerTask使用详解
# Java实现定时任务最简单的3种方法
# Java中的定时器Timer详解
# java基于QuartzJobBean实现定时功能的示例代码
# 的是
# 好了
# 是在
# 我在
# 不需要
# 一是
# 要用
# 有兴趣
# 已是
# 重写
# 升级到
# 取而代之
# 每隔
# 第二步
# 讲到
# 做些
# 需要注意
# 中会
# 之于
# 大家多多
相关文章:
h5网站制作工具有哪些,h5页面制作工具有哪些?
建设网站制作价格,怎样建立自己的公司网站?
平台云上自助建站如何快速打造专业网站?
建站之星导航如何优化提升用户体验?
如何选择建站程序?包含哪些必备功能与类型?
制作网站怎么制作,*游戏网站怎么搭建?
如何在阿里云通过域名搭建网站?
活动邀请函制作网站有哪些,活动邀请函文案?
如何在建站主机中优化服务器配置?
制作网站公司那家好,网络公司是做什么的?
如何在云服务器上快速搭建个人网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何通过云梦建站系统实现SEO快速优化?
制作表格网站有哪些,线上表格怎么弄?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
Python如何创建带属性的XML节点
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何通过可视化优化提升建站效果?
如何通过山东自助建站平台快速注册域名?
PHP正则匹配日期和时间(时间戳转换)的实例代码
大连 网站制作,大连天途有线官网?
网站制作报价单模板图片,小松挖机官方网站报价?
济南网站制作的价格,历城一职专官方网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
小型网站建站如何选择虚拟主机?
教程网站设计制作软件,怎么创建自己的一个网站?
如何在西部数码注册域名并快速搭建网站?
详解jQuery停止动画——stop()方法的使用
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何用低价快速搭建高质量网站?
如何通过服务器快速搭建网站?完整步骤解析
建站主机选择指南:服务器配置与SEO优化实战技巧
清除minerd进程的简单方法
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
微信h5制作网站有哪些,免费微信H5页面制作工具?
个人网站制作流程图片大全,个人网站如何注销?
如何通过wdcp面板快速创建网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何在宝塔面板中修改默认建站目录?
利用JavaScript实现拖拽改变元素大小
高防服务器如何保障网站安全无虞?
全景视频制作网站有哪些,全景图怎么做成网页?
如何通过西部建站助手安装IIS服务器?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
简单实现Android文件上传
*请认真填写需求信息,我们会在24小时内与您取得联系。