首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【建议收藏】Android实现Rxjava2+Retrofit完美封装

去年时候学习了RxjavaRetrofit基本用法,但一直没有在实际项目中运用。今年开做新项目,果断在新项目中引入了RxJavaRetrofit。...其中code为服务器返回错误码。我们会事先和服务器约定成功code值,比如200表示请求成功。但通常在请求服务器数据过程免不了会出现各种错误。例如用户登录密码错误、请求参数错误情况。...上一节我们讲到了在请求服务器可能出现一些例如密码错误、参数错误情况,服务器给我们返回了对应错误码,我们根据错误码抛出了对应自定义异常。除此之外在我们发起网络请求还可能发生一些异常情况。...2.如果在请求服务器过程中出现任何异常,都会回调到onError方法。包括上节我们自己抛出异常都会回调到onError。因此我们重头戏就是处理onError。...RxLifecycle官网 七.如何使用封装 前面几节内容讲解了如何RxJava进行二次封装,封装部分代码可以放在我们项目的Library模块

1.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

Novate 一款Android RxStyle网络框架

去年我写了一个Android网络框架Novate, 基于RetrofitRxJava封装链式网络框架, 支持okhttp调用分格,又兼容Retrofit注入方式,并支持RxJava调用链式操作...最重要novate自带异常驱动机制,帮开发者解决了绝大部分异常 错误处理,减少API或者业务代码出错导致崩溃概率。 ?...扩展性强:支持自定义RetrofitAPI,默认Api无法满足可自定义自己Service 悠雅方便:支持统一请求访问网络流程控制,以方便帮你完美加入Processbar进度。...,RxFrom, RxUpLoad,RxDownLoad.使用基本APi之前 请阅读对RxCallBack介绍。...Api 姿势 Novate默认API让你不爽,Novate同样支持你自己RetrofitApiService。

94020

RxJava从入门到不离不弃(八)——使用场景

原生态Retrofit写网络请求代码。...RetrofitRxjava结合,大家可以自己进行封装;那么用上了RxJava,我们就可以用它强大操作符来对数据进行处理和操作,各位看官可以具体去实现,我在这里不做多做赘述。...由于 RxJava Observable 订阅后(调用 subscribe 函数),一般会在后台线程执行一些操作(比如访问网络请求数据),当后台操作返回后,调用 Observer onNext 等函数...RxJava也可以轻松实现事件总线,因为它们都依据于观察者模式。 RxPermission RxPermission是基于RxJava开发用于帮助在Android 6.0处理运行时权限检测框架。...总结 简而言之Rxjava是一个很牛逼库,如果你项目中还没有使用RxJava的话,建议可以尝试去集成使用;对大多数人而已RxJava是一个比较难上手库了,不亚于Dagger上手难度;不过当你认识学习使用过了

67310

利用Kotlin方式如何处理网络异常详解

前言 之前文章 RxJava处理业务异常几种方式 曾经介绍过 Retrofit 异常可以有多种处理方式。 其中,可以使用 RxJava 错误处理操作符,它们是专门用来处理异常。...onErrorResumeNext 操作符,表示当错误发生时候,使用另外一个数据流继续发射数据。在返回被观察者是看不到错误信息。 二....使用 Kotlin 特性 这次我结合 Kotlin 扩展函数特性来尝试处理异常。...错误处理操作符,可以编写如下扩展函数: import com.safframework.utils.RetryWithDelay import io.reactivex.Maybe /**...它 action 参数传递是一个函数,专门用于处理异常。每一个网络请求异常处理并不会都一样,可以用该函数来传递不同异常处理。 总结 合理利用 Kotlin 扩展函数,可以编写优雅代码

82020

用Kotlin方式来处理网络异常

森林梦想.jpg 一. 前言 之前文章 RxJava处理业务异常几种方式 曾经介绍过 Retrofit 异常可以有多种处理方式。...其中,可以使用 RxJava 错误处理操作符,它们是专门用来处理异常。 随便例举两个操作符: onErrorReturn 操作符,表示当发生错误时候,发射一个默认值然后结束数据流。...所以 Subscriber 看不到异常信息,看到是正常数据流结束状态。 onErrorResumeNext 操作符,表示当错误发生时候,使用另外一个数据流继续发射数据。...在返回被观察者是看不到错误信息。 二. 使用 Kotlin 特性 这次我结合 Kotlin 扩展函数特性来尝试处理异常。...它 action 参数传递是一个函数,专门用于处理异常。每一个网络请求异常处理并不会都一样,可以用该函数来传递不同异常处理。 总结 合理利用 Kotlin 扩展函数,可以编写优雅代码

51620

深入浅出RxJava+Retrofit+OkHttp网络请求

封装成果 封装完以后,具有如下功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一ProgressDialog和回调Subscriber处理...,只是使用方式不一样,@Header是作为请求方法参数传入,@Headers是以固定方式直接添加到请求方法上 ReTrofit基本使用: 首先给定一个测试接口文档,后面的博客我们都是用这个接口调试...使用步骤,接下来我们结合RxJava讲述 ReTrofit+Rxjava基本使用 对比之前Retrofit使用 1.在于我们需要修改service接口返回信息我们需要返回一个Observable对象...集合Retrofit使用就介绍完了,同样可以发现使用起来很多重复性代码,而且使用也不是那么简单,所以才有了下面的封装 ReTrofit+Rxjava进阶封装之路 先来一张流程图压压惊 ?...先给大家看看为师完全体功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一ProgressDialog和回调Subscriber处理 4

5.8K10

从架构角度看Retrofit作用、原理和启示

不过,对于Retrofit这样设计精妙、代码简洁、使用方便优秀开源项目,不能仅知道如何扩展使用,或者仅研究它采用技术或模式,“技”当然重要,但不能忽视了背后“道”。...基本场景 通常来说,使用Retrofit要经过这样几个步骤 引用在gradle文件引用retrofit compile 'com.squareup.retrofit2:retrofit:2.3.0'...网络请求目标虽然是数据,但是我们需要为这个数据写大量配套代码,发起请求对象Call,接收数据对象CallBack,做数据转换对象Converter,以及检查和处理异常对象等。...这是怎么回事呢,我们知道Retrofit使用了建造者模式,建造者模式特定就是实现了建造和使用分离,所以建造者模式建造函数里,一般会有很复杂对象创建和初始化过程,所以我们要看一下Retrofit...因为这种Call对象生产需要有大量配套代码,为了简化代码Retrofit使用动态代理来生产这个对象。 最后,因为需要处理方法和对象太多太复杂,需要使用建造者模式来把建造过程和使用过程分离开。

2K100

All RxJava - 为Retrofit添加重试

我一直使用Squareretrofit和ReactiveXRxJava,接下来我就来分享一下我是如何使用这两个库来实现一个可配置次数退避重试策略。 Repeat? Retry!...因此.retry()以及它重载函数已经不能满足我们需求了,好在RxJava为我们提供了另一个非常有用操作符.retryWhen(),我们可以通过判断异常类型,来决定是否发起重试(重订阅)。...下面这段代码是我使用notificationHandler实现类RetryWhenHandler,它基本满足了我重试要求。...②如果最后一次网络请求依然遭遇了异常,则将此异常继续向下传递,以便在最后onError()函数处理。...RxJavaretrofit添加重试功能,它利用retrofit本身“基于方法描述特性”,因此足够灵活,而且扩展性也很高 : ) 当然,不局限于此,如果你使用了okhttp,还可以通过自定义Interceptor

1.6K10

2018 年你可能已经错过 Java 类库

GitHu链接,官方网站链接 RxJava RxJava – JVM响应式编程扩展 – 是一个为Java虚拟机编写使用可观察序列构建异步基于事件程序类库。...注解驱动 提供任何东西,慎重对待类型层次结构 同步和异步消息传递 可配置引用类型 消息过滤 封装消息 处理优先级 自定义错误处理扩展性 ?...GitHub, Javadoc Lombok项目 使用注解来减少Java重复代码,比如getter,setters,非空检查,生成Builder等。 val - 总算有了!...,允许最终用户在部署能够接入自己想要使用日志框架。...与标准JUnit 参数化运行器区别如下: 更明确 - 参数实在测试方法参数,而不是在类字段 更少代码 - 你不需要用构造函数来设置参数 你可以在同一个类混合使用参数化和非参数化方法。

1.6K20

RxJava +Retrofit 你需要掌握几个实用技巧

RxJava +Retrofit 你需要掌握几个技巧,RetrofitOkHttp缓存,统一对有无网络处理, 异常处理,返回结果问题. ?...继续把 Func1加到Observable : 因此这样用observable提供onErrorResumeNext 则可以将你自定义Func1 关联到错误处理: ((Observable...还有Func1 这样我们对服务器返回错误状态进行了自我处理,再稍加翻译下便可以达到用户看懂语言 这个类我参考一叶飘舟同学案列,我再次做了改进: ExceptionHandle 错误处理驱动 public...注意:如果你不想将业务分发加到错误回调,也可以这样做: 好比有的人喜欢将业务处理加到业务回调,如果后台返回业务码并不成功码情况下, 不想走错误回调,也不想走成功回调, 想走直走业务回调。...,再进行RxJavaRetrofit ,所有坑直接添就行,接着上次介绍,更多介绍请见 Novate。

85210

RxHttp ,比Retrofit 更优雅协程体验

,再有就是多个注解非法在一起使用时,只有在编译期间才能给我们明确错误,这也是我刚上手Retrofit比较头疼一点。...串行请求,只要其中一个请求出现异常,协程便会关闭(同时也会关闭请求),停止执行剩下代码,接着走异常回调 5.2、协程并行多个请求 请求并行,在现实开发,也是家常便饭,在一个Activity,我们往往需要拿到多种数据来展示给用户...如果想多个请求互不影响,就可以使用上面介绍onErrorReturn、onErrorReturnItem操作符,出现异常,给出一个默认对象,又或者使用tryAwait操作符获取返回值,出现异常,返回...继续往下看 说起APT,大家脑海里第一个想到可能是解耦,没错,解耦是它一大优势,其实它还有一个更大有优势,那就是根据配置,生成不同代码逻辑;比如在RxHttp,默认是不依赖RxJava,但是如果你需要使用...)任一版本(v4.3.0除外,该版本有一个bug,导致无法适配),因此,使用RxHttp,完全不用担心okhttp版本冲突问题。

2.1K20

2017 年你不能错过 Java 类库

GitHu链接,官方网站链接 RxJava RxJava – JVM响应式编程扩展 – 是一个为Java虚拟机编写使用可观察序列构建异步基于事件程序类库。...注解驱动 提供任何东西,慎重对待类型层次结构 同步和异步消息传递 可配置引用类型 消息过滤 封装消息 处理优先级 自定义错误处理扩展性 ?...GitHub, Javadoc(http://bennidi.github.io/mbassador/) Lombok项目 使用注解来减少Java重复代码,比如getter,setters,非空检查...,允许最终用户在部署能够接入自己想要使用日志框架。...与标准JUnit 参数化运行器区别如下: 更明确 – 参数实在测试方法参数,而不是在类字段 更少代码 – 你不需要用构造函数来设置参数 你可以在同一个类混合使用参数化和非参数化方法。

1.5K10

RxJava 详解

onError(): 事件队列异常。在事件处理过程中出异常,onError()会被触发,同时队列自动终止,不允许再有事件发出。...;   } }; 不仅基本使用方式一样,实质上,在 RxJava subscribe 过程,Observer也总是会先被转换成一个Subscriber再使用。...扩展:由于可以在嵌套Observable添加异步代码,flatMap()也常用于嵌套异步操作,例如嵌套网络请求。示例代码Retrofit + RxJava): ?...,因为直接使用 lift() 非常容易发生一些难以发现错误。...在程序构建过程Retrofit 会把自动把方法实现并生成代码,然后开发者就可以利用下面的方法来获取特定用户并处理响应: ? 而使用 RxJava 形式 API,定义同样请求是这样: ?

1.7K10

如何实践MVP+RxJava+Retrofit(1)

那它和一般handler与AsyncTask异步机制有啥不同?    使用RXjava进行异步操作你会发现不管多复杂逻辑,Rxjava都能清晰易懂写出来。    ...Rxjava采用订阅方式,告诉被观察者:我需要你某某状态,你要在它变化时候通 知我。    典型例子是事件点击监听器 OnClickListener,先填上一段代码,很熟悉对吧。...观察者模式    RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。...RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新 onNext() 发出,需要触发 onCompleted() 方法作为标志。...onError(): 事件队列异常。在事件处理过程中出异常,onError() 会被触发,同时队列自动终止,不允许再有事件发出。

73050

Android RxJavaRxAndroid结合Retrofit使用

概述 RxJava是一个在 Java VM 上使用可观测序列来组成异步、基于事件程序库。更重要是:使用RxJava代码逻辑上会非常简洁明了,尤其是在复杂逻辑上。告别迷之缩进。...Retrofit GitHub地址:https://github.com/square/retrofit 热身运动 - 观察者模式 RxJava 异步实现,是通过一种扩展观察者模式来实现。...RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。没有新onNext()之后,调用此方法。 onError():事件队列异常。...在事件处理过程中出异常,onError() 会被触发,同时队列自动终止,不允许再有事件发出。 onCompleted() 和 onError()在一个队列只能调用一个,并且是最后一个。...接下来会一一讲解 MainActivity#getWeatherInfo() 在这个方法里实现了最基本RxJava/RxAndroid和Retrofit结合。

1.2K100

【转-干货】Retrofit2.0使用总结及注意事项

更多关于REST介绍:什么是REST - GitHub讲解非常详细 2.0与1.9使用比较 如果之前使用Retrofit1,会发现2.0后API会有一些变化, 比如创建方式,拦截器,错误处理,转换器等...在Retrofit1使用是RestAdapter,而Retrofit2使用Retrofit实例,之前setEndpoint变为了baseUrl。...Retrofit1使用setRequestInterceptor设置拦截器,对http请求进行相应等处理。...Retrofit1同步和异步执行同一个方法需要分别定义接口。 Retrofit1对正在进行网络任务无法取消。...,在ConverterFactory中进行处理, 可参照: Retrofit+RxJava实战日志(3)-网络异常处理 retrofit-2-simple-error-handling 网络状态监听 一般在没有网络时候使用缓存数据

5.3K30

Android RxJava使用

本文主要对RxJava及常用操作符使用进行总结,同时对RxJava在Android几种常见使用场景进行举例。...RxJava是一种异步数据处理库,也是一种扩展观察者模式。...RxAndroid 对于Android开发者来说,使用RxJava也会搭配RxAndroid,它是RxJava针对Android平台一个扩展,用于Android 开发。它提供了响应式扩展组件。...与Retrofit结合使用 Retrofit使用参考之前博文:Retrofit Retrofit支持RxJava适配器,目前Retrofit官方最新RxJava适配器已经更新到Rx3.x版本了。...使用及Android常见使用场景进行总结,掌握这些还远远不够,RxJava还有许多强大功能,诸如从磁盘/内存获取缓存数据,背压策略,联想搜索优化等等。

2.8K20

Android响应式编程(一)RxJava前篇

RxJava与观察者模式 RxJava异步操作是通过扩展观察者模式来实现,不了解观察者模式可以先看下 设计模式(五)观察者模式这篇文章Rxjava有四个基本要素:Observable (被观察者...2.RxJava基本用法 在使用RxJava前请现在Android Studio 配置gradle: ?...onError:事件队列异常,在事件处理过程中出异常,onError() 会被触发,同时队列自动终止,不允许再有事件发出。 onNext:普通事件,将要处理事件添加到事件队列。...Schedulers.trampoline():当我们想在当前线程执行一个任务,并不是立即时,可以用.trampoline()将它入队。这个调度器将会处理队列并且按序运行队列每一个任务。...RxJava+Retrofit访问网络是比较搭,但是此前我网络系列并没有介绍Retrofit,所以我们先准备用RxJava+OKHttp来访问网络,至于RxJava+OKHttp访问网络会在此系列以后章节做介绍

1.3K50
领券