前言

由于现在网络层已经升级到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实现定时功能的示例代码
# 的是
# 好了
# 是在
# 我在
# 不需要
# 一是
# 要用
# 有兴趣
# 已是
# 重写
# 升级到
# 取而代之
# 每隔
# 第二步
# 讲到
# 做些
# 需要注意
# 中会
# 之于
# 大家多多
相关文章:
设计网站制作公司有哪些,制作网页教程?
建站之星安装失败:服务器环境不兼容?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
实例解析Array和String方法
如何制作网站标识牌,动态网站如何制作(教程)?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何在七牛云存储上搭建网站并设置自定义域名?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何快速搭建个人网站并优化SEO?
如何快速搭建响应式可视化网站?
如何在阿里云部署织梦网站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
,如何利用word制作宣传手册?
如何基于PHP生成高效IDC网络公司建站源码?
如何获取开源自助建站系统免费下载链接?
再谈Python中的字符串与字符编码(推荐)
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何快速搭建高效服务器建站系统?
建站之家VIP精选网站模板与SEO优化教程整合指南
导航网站建站方案与优化指南:一站式高效搭建技巧解析
如何快速搭建虚拟主机网站?新手必看指南
javascript中的try catch异常捕获机制用法分析
,怎么在广州志愿者网站注册?
如何通过.red域名打造高辨识度品牌网站?
如何用美橙互联一键搭建多站合一网站?
建站之星多图banner生成与模板自定义指南
建站之星图片链接生成指南:自助建站与智能设计教程
高性价比服务器租赁——企业级配置与24小时运维服务
制作电商网页,电商供应链怎么做?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
教学论文网站制作软件有哪些,写论文用什么软件
?
如何选择CMS系统实现快速建站与SEO优化?
如何通过云梦建站系统实现SEO快速优化?
如何在万网自助建站中设置域名及备案?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何制作算命网站,怎么注册算命网站?
如何通过VPS搭建网站快速盈利?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
建站之星导航配置指南:自助建站与SEO优化全解析
在线教育网站制作平台,山西立德教育官网?
内部网站制作流程,如何建立公司内部网站?
制作农业网站的软件,比较好的农业网站推荐一下?
利用JavaScript实现拖拽改变元素大小
济南网站建设制作公司,室内设计网站一般都有哪些功能?
宁波自助建站系统如何快速打造专业企业网站?
广州营销型建站服务商推荐:技术优势与SEO优化解析
宝塔建站教程:一键部署配置流程与SEO优化实战指南
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
*请认真填写需求信息,我们会在24小时内与您取得联系。