RxAndroid介绍(一)

http://gank.io/post/560e15be2dca930e00da1083?from=timeline&isappinstalled=0#toc_1
概念:RxAndroid是Rxjava的分支,专门用于Android的开发(实际也就比Rxjava多了几个类,比如Android端的调度器,LOOP等多了些主线程的操作),RX是一种编程理念,叫响应式编程,在不同编程语言有不同的实现

响应式编程(函数式编程):方法的参数还是一个方法(不用再写匿名内部类,创建对象等等操作)
observebles( 响应式 ):就是根据某种状况,做对应的操作,比如有人在你面前跌倒,你条件反射的去拿手机录像...

我们做Android开发直接用RxAndroid即可,不过搭建环境时,Rxjava也要关联

官方源码地址:https://github.com/ReactiveX/RxJava            https://github.com/ReactiveX/RxAndroid 

RxAndroid详细介绍:http://mp.weixin.qq.com/s?__biz=MzI3MDE0NzYwNA==&mid=2651435447&idx=1&sn=19f8f457dca675ffa987cf9bd45d6642&chksm=f12898ccc65f11dadb5e5fc36ecae5b9f93e263f3a7d92b7b27a5b1e7370d91c434781ee6334&mpshare=1&scene=23&srcid=05138uA1VNrYw45WiMOY8U6h#rd

 MVP,Retrofit,RxJava : http://mp.weixin.qq.com/s?__biz=MzA3MjgwNDIzNQ==&mid=2651940987&idx=1&sn=2681d74fba727f24046eead37f519c6a&chksm=84fd7a9fb38af389e4da28b7ebda355d74e027c2db762e09ff936a8b8a8c217e6aa7adddcf5d&mpshare=1&scene=23&srcid=0512m5iEKHSDMEUONabbPGva#rd

github官方介绍:
> a library for composing asynchronous and event-based programs by using observable sequences.  
> 一个在运行在Java VM上的库, 通过_可观测的序列_来组成一个异步的、基于事件的程序。

特色: 观察者模式,lambada表达式,使用stream特性 操作集合,进行异步操作( 完全替代AsyncTask ),用到了很多Java1.8的新特性

* 解决问题:
> 让复杂的程序逻辑回归简单、清晰,不用在考虑什么同步,异步的事情

* Observable(被观察者) 和Subscriber(订阅者) 可以做任何事情
- Observable可以是一个网络请求,Subscriber来显示请求结果;
- Observable可以是一个数据库查询,Subscriber来显示查询结果;
- Observable可以是按钮点击事件,Subscriber来响应点击事件;
- Observable可以是大图片文件的加载解析, Subscriber来展示解析后的图片。

* RxJava 的四个基本概念:观察者设计模式
- Observable (可观察者/被观察者)
- Observer (观察者/订阅者)
- subscribe (订阅)
- Event (事件)

## RxJava的核心类 
* Observable 可观察者/被观察者

* Observer/Subscriber 观察者/订阅者
一般我们用 Subscriber更多,他不仅有observer有的方法,也包含了Observer方法没有的方法

* 操作符(Operators)(常用的)
- map 转换对象
- flatMap 平铺对象
- filter 过滤
- distinct() 去重复(独特的)
- take(int i) 从开始取出固定个数
- doOnNext 输出元素之前的额外操作(不常用)
- toList() 打包对象为集合
* 调度器(Scheduler), 用于线程控制 
- Schedulers.immediate() 默认线程
- Schedulers.newThread() 每次都创建新的线程执行
- Schedulers.io() 包含线程池的机制, 线程个数无限, 可以复用空闲线程(常用)
- Schedulers.computation() CPU密集计算线程, 线程池线程数和CPU数一致.处理图形运算
- AndroidSchedulers.mainThread() Android更新界面的UI主线程 (常用)

* subscribeOn 可执行多次, 切换操作符的线程
* observeOn 只需要执行一次, 指定订阅者执行的线程

### 添加java8的lambda支持

* build.gradle引入依赖
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'

### RxJava 使用流程
1. 创建 Observable 被观察者
2. 初始化被观察(订阅)后的事件序列
2. 创建 Observer/Subscriber 观察者/订阅者
3. 订阅 Subscribe

## RxJava在Android中的典型使用场景
* Scheduler线程切换
* 定时任务 timer
* 周期任务 interval
* 合并多个请求 merge
* 防止连续点击 throttleFirst
* 解决回调嵌套Callback hell, flatMap
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值