android 多种形式定时轮训工具类

2024-06-22 03:58

本文主要是介绍android 多种形式定时轮训工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*** 定时器轮训工具类*/
public class RxTimeUtils {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>() {@Overridepublic void onSubscribe(Disposable d) {mDisposable = d;}@Overridepublic void onNext(Long aLong) {if (next != null) {next.doNext(aLong);}}@Overridepublic void onError(Throwable e) {cancel();}@Overridepublic void onComplete() {}});}/*** 一直执行轮训* milliseconds 毫秒* next回调方法*/public static void interval(long milliseconds, IRxNext next) {Observable.interval(milliseconds, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Long>() {@Overridepublic void onSubscribe(Disposable d) {mDisposable = d;}@Overridepublic void onNext(Long aLong) {if (next != null) {next.doNext(aLong);}}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}/*** 启动定时器* milliseconds//总时间*/public static void startTime(long milliseconds, IRxNext next) {Observable.interval(0, 1, TimeUnit.MILLISECONDS).take(milliseconds + 10)//设置总共发送的次数.map(new Function<Long, Long>() {@Overridepublic Long apply(Long aLong) throws Exception {//aLong从0开始return milliseconds - aLong;}}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Long>() {@Overridepublic void onSubscribe(Disposable d) {mDisposable = d;}@Overridepublic void onNext(Long value) {if (next != null) {next.doNext(value);}//Log.d("Timer",""+value);}@Overridepublic void onError(Throwable e) {cancel();}@Overridepublic void onComplete() {cancel();}});}public static CountDownTimer timer;/*** 第一个参数表示总时间,第二个参数表示间隔时间。* 意思就是每隔一秒会回调一次方法onTick,然后1秒之后会回调onFinish方法。*/public static void DownstartTime(int Totaltime, int IntervalTime, IRxTick next) {timer = new CountDownTimer(Totaltime, IntervalTime) {@Overridepublic void onTick(long aLong) {if (next != null) {next.doTick(aLong);}}@Overridepublic void onFinish() {if (next != null) {next.doFinish();}}};//启动倒计时timer.start();}/*关闭定时器*/public static void canceltiem() {if (timer != null) {timer.cancel();}}/*关闭rxjava*/public static void cancel() {if (mDisposable != null && !mDisposable.isDisposed()) {mDisposable.dispose();}}public interface IRxTick {void doTick(long number);void doFinish();}public interface IRxNext {void doNext(long number);}
}用法/*totaltime=60000总计时一分钟,intervaltime=1000间隔1秒执行一次dotick方法*/
RxTimeUtils.DownstartTime(60000, 1000, new RxTimeUtils.IRxTick() {@Overridepublic void doTick(long number) {//具体业务,如:走一个接口成功了直接RxTimeUtils.canceltiem();关掉定时器,只判断成功就可以,失败了接着轮训。Log.e("sssssssss", "开始轮训业务......" + number);}@Overridepublic void doFinish() {handler.post(new Runnable() {@Overridepublic void run() {Log.e("sssssssss", "轮训结束......");RxTimeUtils.canceltiem();}});}
});

这篇关于android 多种形式定时轮训工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083231

相关文章

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

SpringBoot中使用定时任务schedule详解

《SpringBoot中使用定时任务schedule详解》文章介绍了如何在Spring应用中使用@EnableScheduling注解启用定时任务,并创建一个配置类来定义定时任务的执行,文章还详细解释... 目录1、在spring启动类上添加注解@EnableScheduling2、创建定时任务配置类3、执

基于Nacos实现SpringBoot动态定时任务调度

《基于Nacos实现SpringBoot动态定时任务调度》本文主要介绍了在SpringBoot项目中使用SpringScheduling实现定时任务,并通过Nacos动态配置Cron表达式实现任务的动... 目录背景实现动态变更定时机制配置化 cron 表达式Spring schedule 调度规则追踪定时

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Spring定时任务之fixedRateString的实现示例

《Spring定时任务之fixedRateString的实现示例》本文主要介绍了Spring定时任务之fixedRateString的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录从毫秒到 Duration:为何要改变?核心:Java.time.Duration.parse

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码