前言

由于现在网络层已经升级到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实现定时功能的示例代码
# 的是
# 好了
# 是在
# 我在
# 不需要
# 一是
# 要用
# 有兴趣
# 已是
# 重写
# 升级到
# 取而代之
# 每隔
# 第二步
# 讲到
# 做些
# 需要注意
# 中会
# 之于
# 大家多多
相关文章:
如何在宝塔面板中创建新站点?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何配置支付宝与微信支付功能?
C#怎么创建控制台应用 C# Console App项目创建方法
高防服务器租用首荐平台,企业级优惠套餐快速部署
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
宝塔建站教程:一键部署配置流程与SEO优化实战指南
已有域名和空间如何快速搭建网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站主机选择指南:服务器配置与SEO优化实战技巧
如何快速生成可下载的建站源码工具?
代购小票制作网站有哪些,购物小票的简要说明?
Bpmn 2.0的XML文件怎么画流程图
建站org新手必看:2024最新搭建流程与模板选择技巧
如何通过宝塔面板实现本地网站访问?
5种Android数据存储方式汇总
如何在阿里云虚拟主机上快速搭建个人网站?
网站设计制作企业有哪些,抖音官网主页怎么设置?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
大连网站制作公司哪家好一点,大连买房网站哪个好?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何在Windows 2008云服务器安全搭建网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
山东网站制作公司有哪些,山东大源集团官网?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何通过FTP服务器快速搭建网站?
制作宣传网站的软件,小红书可以宣传网站吗?
*服务器网站为何频现安全漏洞?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
建站VPS能否同时实现高效与安全翻墙?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何规划企业建站流程的关键步骤?
太平洋网站制作公司,网络用语太平洋是什么意思?
企业微网站怎么做,公司网站和公众号有什么区别?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
如何配置WinSCP新建站点的密钥验证步骤?
如何快速生成专业多端适配建站电话?
营销式网站制作方案,销售哪个网站招聘效果最好?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
制作电商网页,电商供应链怎么做?
如何自定义建站之星网站的导航菜单样式?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
,网站推广常用方法?
网站制作壁纸教程视频,电脑壁纸网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。