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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结