在Rxjava2中使用retryWhen来重新进行网络请求失败

wujushan wujushan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
使用Rxjava2+ Retrofit 进行网络请求,在请求失败之后,使用retryWhen实现重新请求(如下面代码)。但发现没有实现预想的功能:

class TestRetryWhenHeartBeatException : Function<Observable<out Throwable>, ObservableSource<*>> {
companion object {
private val DELAY: Long = 6
private val TAG:String = TestRetryWhenHeartBeatException::class.java.simpleName
}
override fun apply(t: Observable<out Throwable>): ObservableSource<*> {
logd(TAG,"retry when")
return t.flatMap { Observable.timer(DELAY, TimeUnit.SECONDS) }
}
}

mHeartBeatDisposable  =
Observable.interval(5,TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
// .repeatWhen(RepeatWhenHeartBeatCompleted())
.retryWhen(TestRetryWhenHeartBeatException())
.flatMap {
if (TaskManager.mIdle) {
logd(TAG, "heartbeat")
mNetWorkApi.heartBeat(UrlManager.HEARTBEAT_URL)
} else {
Observable.create { emitter ->
//emit a HttpResult with no data
emitter.onNext(nullHeartBeat)
}
}
}
.subscribe({
logd(TAG, "lost server false")
}, { e ->
loge(TAG, e.message)
loge(TAG, "lost server true")
}, {})


...全文

相关推荐

WebServices中使用rxjava+ksoap2进行请求接口数据

介绍:http://blog.csdn.net/lcwoooo/article/details/68083249

lcwoooo

RxJava2.0在android开发中的实用总结

RxJava2.0在android开发中的实用 总结 RxJava2.0在android开发中的实用 总结

tmepri

浅谈RxJava处理业务异常的几种方式

本篇文章主要介绍了浅谈RxJava处理业务异常的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38678510

Android-基于RetroftRxjava的网络框架封装

基于Retroft Rxjava的网络框架封装

weixin_39841365

三相四桥臂电压不对称跌落补偿动态电压恢复器DVR(Simulink仿真实现)

内容概要:本文介绍了一种基于三相四桥臂拓扑结构的动态电压恢复器(DVR),用于补偿电网中由电压不对称跌落引起的电能质量问题。通过Simulink平台构建仿真模型,重点研究了在不平衡负载和电网电压跌落工况下,DVR对负载侧电压的快速补偿能力。系统采用多准PR(Proportional Resonant)并联控制策略,实现对各相电压的独立精确控制,有效抑制负序分量,提升系统在复杂工况下的稳定性和响应性能。仿真结果验证了所提控制方法在电压幅值、相位补偿及波形质量改善方面的有效性,适用于对供电连续性和电能质量要求较高的工业场景。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事电能质量治理的工程技术人员。; 使用场景及目标:①研究动态电压恢复器在电压跌落、三相不平衡等典型电能质量问题中的补偿机制;②掌握三相四桥臂逆变器的建模与多准PR控制策略的设计与实现;③为高精度电能质量调节装置的研发提供理论依据和仿真验证手段。; 阅读建议:建议结合提供的参考文献和说明文档,深入理解控制算法的设计原理,并在Simulink环境中动手复现仿真模型,通过调整故障条件和控制器参数,观察系统动态响应,从而全面掌握DVR的工作特性与优化方法。

大龙不吃小鱼干
评论 4
收藏 已收藏
分享
返回顶部
wujushan
Android 80,489 成员 91,375 内容