Skip to content

1181631922/RxAndroid

Repository files navigation

1.RxAndroid

RxAndroid+Retrofit示例代码

2.上一下gif图

  • 1

  • 2

  • 3

  • 4

2.1我的csdn

3.先看一下观察者模式:

定义对象间的一(被观察者)种一对多(观察者)的依赖关系,当一个对象发生改变时,所有依赖于他的对象都能得到通知并被自动更新。

观察者模式示意图

4.RxAndroid的观察者模式

Rxandroid的观察者模式有三个回调方法(如果结合retrofit的话里面的参数是可选的,但是nonext是必选的,举个例子,如果用户不关心结果, 不关心事情是否做完,只要有个onnext通知就可以,但是一般涉及到网络的话还需要关心onerror结果,做事情么,要的就是结果, 但是oncompleted如果在批处理我感觉没啥卵用,后文会有代码说明),这三个onnext是一定触发的,剩下的两个有其中一个也是会一定触发的。

5.正文

  • 先看一个简单的打印

    helloworld的简单打印

  • 是不是感觉代码变多了,再结合一下lambda表达式: lambda表达式helloworld

    是不是有变简洁了,这个可以类比as的默认缩进

6.来看一下源码,正好帮助自己理解一下

rxandroid观察者源码

  • 这个empty很有意思,来看下源码,这里采取的是单例的设模式 empty源码

  • 再看一下onxxx里面的核心代码,你就知道为啥可以遍历了 onxxx核心代码

    看了下稍微有点失望,其实也是用的for,但是再去具体看的话里面又结合了观察者模式还有三个回调方法,这里建议大家自己看一下源代码。

7.这里来看结合实例理解一下观察者和订阅者

观察者

订阅者

  • 这有段挺不错的代码,截取了一下 示例1

    示例2

8.该说的基本都说了,现在你的心里估计还是一脸困惑,心里肯定再说有个毛用,先拿最简单的helloworld做个例子

  • 看一下实例 简单实例

  • 其实这时候大家所想估计和我当时一样,心头一万头草泥马路过,一行代码的问题这么多代码才搞定,一点都不简洁,ok,来看点简洁的 简洁示例

    操作界面

  • 这里又有问题了,你肯定会问hello哪去了,到了这里是不是有那么一点感到还行哈,变简单了,这里看一下just的源码,其实到了from那里,这里好多用的都是泛型, 而且也必须用泛型,这样使用者考虑的就不必那么多,不必拘谨了,ok,连贯的打印所需要的东西 测试打印
  • 关于县城切换的都有注释,下面再举两个例子,看一下io,newthread的区别,因为网络请求这两个都可以,然后就有点好奇了,结果其实我感觉差别不大,至少在创建的时候 区别1

    局别2

    这个包是rxjava里面的,其实io和newthread创建过程是一样的,但是prefix不一样,还有incrementandget也不一样,然后去里面翻了翻,结果是这样,也是意料之中吧, 但是感觉写这个代码的人对性能要求挺高的,注意标红箭头的 prefix

9.来看一些实例

operate3

operate4

线程切换是不是很方便,还有就是感觉rxandroid在批处理方便很方便,最大的方便就是不用自己去写一堆循环了。

  • 下面来看一下lift()线程变换的原理 lift变换

    call

    又仔细瞅了瞅,感觉这个方法很方便,而且根据方法名字就能知道他是做啥的,operator大家可以自己看源码。

10.到此为止RxAndroid可以进行数据的处理了,再来就是加上网络请求,这里是和retrofit相结合的,rxandroid自己也可以,但是需要自定义callback,这里不细说了。

从项目的应用角度说一下retrofit,其实就是okhttp的一个包装。 retrofit有好多大神讲的很好了

11.再有就是对网络请求的数据解析

  • 这里使用的是gson,如果不进行注解的话,bean的字段需要与服务器返回的字段相同,并且类型需要对应 getdata
  • 线面说一下rxandroid+retrofit,不过在这之前还是先了解一下拦截器的问题,一般请求的header是不会变得,但是有的是动态加的,这里做两个测试 一

    二

  • 现在来看一下网络请求的流程 网络请求

  • 光看是不是就感觉很爽,一条线下来全部搞定,其实还可以再简洁一点 initdata

  • 到这里基本就完了,之后就能上手项目里

About

RxAndroid+Retrofit

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages