RxJava

什么是RxJava?

1.是什么?
	1.RxJava是一个库
	2.RxJava实现了由可观察序列来组织的代码逻辑:链式调用
	3.RxJava实现了基于异步的,基于事件的链式调用机制
2.优点
	1.链式调用:代码逻辑简洁
	2.越来越多的框架采用了RxJava的框架
3.基本概念
	被观察者(对象):Observable
	观察者(对象):Observer
	订阅(注册):Subscribe
	事件(观察者回调接口)
		onNext()
		onComplete()
			事件队列完毕(没有新的next())
		onError()
			事件队列异常:报出异常,并终止队列
4.基本实现
	1.创建Observer:

1)onNext()
2)onComplete()
3)onError()
最终使用的是Subscriber:Observer的子抽象类:
1)onNext()
正常返回时业务处理:例如界面刷新显示
2)onComplete()
所有事件处理完毕时调用
例如:在此位置可以隐藏进度条
3)onError()
当前调用链任何一个环节报错都将终止流程,并报错
例如:在此位置可以弹出异常
4)onStart():
subscriber的方法,在订阅时(事件开始之前)调用,
例如:在此位置可以显示进度条???注意主线程
5)unsubscribe():
subscriber实现的接口subscription的方法,用于取消订阅。
例如:当退出当前界面时,可以取消数据的拉去和界面的刷新
这个方法很重要,因为subscribe之后,observable会保留对subscriber的引用,不调用该方法可能会内存泄露
2.创建observable:
observable决定什么时候触发事件,及触发什么事件。
被观察者需要制定事件触发规则,即调用事件序列
oncreate(OnSubscribe?)
just(T…)
from(T[])
3.Subscribe()
Observable.subscribe(Subscriber)
public Subscription subscribe(Subscriber subscriber) {… subscriber.onStart();… onSubscribe.call(subscriber);… return subscriber;}
Observable.subscribe(Observer)
4.Scheduler
调度器,用于实现异步机制\n即后台处理,前台回调
在不指定线程的情况下,\nRxJava遵循在哪个线程subscribe(),\n就在哪个线程产生事件;
在那个线程产生事件,就在哪个线程消耗事件。\n如果想要多线程异步处理,就要使用scheduler
Scheduler API
Scheduler.immediate()
运行在当前的线程
Scheduler.newThread()
启用新线程,并在新线程执行事件
Scheduler.io()
I/O操作的scheduler,相比newThread(),\n使用无数量上限的线程池,可线程重用,因此其更有效率
Scheduler.computation()
计算所使用的scheduler,\n使用数量固定的线程池,\n用于CPU的高密度计算。\n不要把I/O操作放在该scheduler
Androidscheduler.mainThread()
主线程
subscribeon()
指定事件发生的线程
observeron()
指定事件消费的线程
5.Operater
所谓变换,就是将事件序列中的对象或者整个事件序列进行处理,转换成新的事件序列或事件
API
map()
事件对象的转换
flatmap()
事件序列转换成新的observable事件序列
switchmap()
相比flatmap,switchmap可以停止之前发出的事件
filter()
过滤:传入过滤条件
take()
截取数量
doOnNext()
在subscriber消费事件之前被调用
throttleFirst()
在每次时间触发后一定时间内丢弃新的事件,\n常用作去抖,比如按键去抖
变换的原理
lift()
针对事件项和事件序列的转换
compose()
针对observable本身的整体转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值