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

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

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

2.1K50

Novate 一款Android RxStyle的网络框架

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

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

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

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

    69810

    用Kotlin的方式来处理网络异常

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

    55020

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

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

    2.3K100

    All RxJava - 为Retrofit添加重试

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

    1.7K10

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

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

    89710

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

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

    1.6K20

    RxHttp ,比Retrofit 更优雅的协程体验

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

    2.2K20

    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.8K10

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

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

    75950

    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.3K100

    【转-干货】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.5K30

    Android 2 新框架 rxjava ,retrifit

    Rxjava Rxjava主要作用就是用来处理异步,当你的业务需要访问数据库,访问网络,或者任何耗时的操作,都可以借助Rxjava来实现。 ...但是有人说在Android中已经有很多异步操作的API,比如Handler,AsyncTask等,这些都能满足基本的异步操作,为什么还要使用Rxjava呢? ...Rxjava常用的的回调方法有三种:  - onNext:完成队列中的一个事件  - onComplete:完成队列中所有的事件  - onError:事件发生错误时,并且后续的事件终止。...Rxjava基本使用方法 创建Observer  Observer是观察者,当被观察者状态发生变化的时候,他会收到相应的事件,使用者可以根据不同的事件进行不同的处理。...简单看一下也能知道,这段代码就是做一些参数校验,baseUrl不能为空否则会抛异常,至于其他的参数如果为null则会创建默认的对象。

    10010

    Android RxJava的使用

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

    3K20

    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.4K50

    Android OkHttp+Retrofit+RxJava搭建网络访问框架(含源码)

    (), retrofit); //最后返回即可 return retrofit; } 四、配置RxJava RxJava是对OkHttp的请求返回做处理,那么这个就涉及到线程的切换和异常的处理...因为在实际开发中很容易出现某一个接口请求返回500、400、404之类的异常,那么也可以在这个RxJava中做处理。...的配置了,不过还有一步就是,在NetworkApi中写一个错误码的处理方法,代码如下: /** * 错误码处理 */ protected static Function...六、自定义Observer   在上面的代码中完成了对OkHttp的优化,OkHttp负责网络访问,使用Retrofit发起网络请求,使用RxJava处理返回结果,在上面只是做了线程的切换和错误码的处理...,对接B的接口时使用B的ip,你可能会觉得不就是修改一行代码的事情吗,不麻烦,那假如让你打包出来测试呢?

    3.7K31

    2018 年你不能错过的 Java 类库

    GitHu链接,官方网站链接 RxJava RxJava – JVM的响应式编程扩展 – 是一个为Java虚拟机编写的使用可观察序列的构建异步的基于事件的程序的类库。...它易于使用,并力求功能丰富,易于扩展,而同时又保证资源的高效利用和高性能。...注解驱动的 提供任何东西,慎重对待类型层次结构 同步和异步的消息传递 可配置的引用类型 消息过滤 封装的消息 处理器的优先级 自定义错误处理 可扩展性 // Define your listener class...,允许最终用户在部署时能够接入自己想要使用的日志框架。...参数化运行器的区别如下: 更明确 - 参数实在测试方法的参数中,而不是在类的字段中 更少的代码 - 你不需要用构造函数来设置参数 你可以在同一个类混合使用参数化和非参数化的方法。

    85220
    领券