Rxjava原理:使用和编写(一)
随着Rxjava 在Android中的应用越来越广泛,面试中难免会被问到关于Rxjava的内容,本文就来手写一下Rxjava的简单实现,通过手写简单的Rxjava 再去了解Rxjava的实现原理会更加容易理解Rxjava 为什么这么实现。Rxjava虽然说是基于观察者模式写的,但在我看来更像是基于责任链模式;
在了解Rxjava之前首先要知道java中的泛型使用,泛型使用本文不讨论
一、 Rxjava的使用
项目 app 模块的集成,只使用原生Rxjava,RxAndroid 只是拓展了Rxjava的内容
implementation "io.reactivex.rxjava3:rxjava:3.1.4"
使用:
public void testRx() {
Obserable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(Observer<? super String> observer) {
observer.onNext("lingtao");
}
}).subscrible(new Observer<String>() {
@Override
public void onNext(String bitmap) {
Log.e("YulianActivity_LOG", "onNext: " s);
}
});
}
Rxjava的使用还是很简单的,上面只是给了Rxjava使用的简单例子,下面就参照它的api调用链来手写一个简单的Rxjava;
二、手写Rxjava
在手写之前大概了解一下各个类的作用,Obserable、ObservableOnSubscribe、Observer;我们把Obserable 当作是个老板,ObservableOnSubscribe 就相当于项目经理,Observer 就是个员工。
比如现在有个例子:老板现在想做一个项目,他又不知道具体做什么类型项目,所以他让项目经理来确定具体项目,现在项目经理确定了要做一个Android项目,并通知员工干活
Obserable:老板(被观察者),他比较懒,什么都不做,只会招员工
ObservableOnSubscribe:项目经理,由项目经理去通知员工干活,并把资料给员工;
Observer:员工(观察者),收到项目经理给的资料具体干活的对象;
首先需要一个被观察者类Obserable,里面有个create与subscrible 方法,这个Obserable肯定是个泛型类,这个泛型T具体类型由项目经理来确定
/**
* 老板
*/
public class Obserable<T> {
ObservableOnSubscribe onSubscribe;
private Obserable(ObservableOnSubscribe onSubscribe) {
this.onSubscribe = onSubscribe;
}
/**
* 老板需要招一个项目经理,所以需要传入一个ObservableOnSubscribe,参照Rxjava调度链
*/
public static <T> Obserable<T> create(ObservableOnSubscribe<T> onSubscribe) {
return new Obserable<T>(onSubscribe);
}
/**
* 老板不仅需要招项目经理也需要招员工来干活,项目经理有个这个员工才能让员工干活
*/
public void subscrible(Observer<T> observer) {
onSubscribe.subscribe(observer);
}
}
Obserable 还是很简单的,Obserable需要持有一个ObservableOnSubscribe项目经理。通过create() 方法创建一个老板,create就一个作用,创建老板;subscrible() 方法就是通知手下干活了,这个通知谁做,当然是项目经理去通知了,所以里面调用了项目经理的subscribe() 方法;
/**
* 项目经理
*/
public interface ObservableOnSubscribe<T>{
// 通知员工的方法
void subscribe(Observer<T> t);
}
ObservableOnSubscribe很简单,只有一个通知员工的方法,参数中的这个员工是老板给的,在方法里面项目经理把Android资料交给员工
/**
* 员工
*/
public abstract class Observer<T> {
//员工收到资料干活的方法
public abstract void onNext(T t);
}
Observer类也很简单,只有一个onNext() 方法,员工收到项目经理给的资料就开始干活了;
到此,一个简单的Rxjava就完成了,当然真正的Rxjava里的Observer 还有其他方法,onError() ,onComplete(),这里就先不写入进来,这里只分析一个简单的Rxjava流程;下面来开始使用
//create 创建一个老板
Obserable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(Observer<String> t) {// 项目经理通知员工干活的方法
//项目经理把Android资料给到员工
t.onNext("Android资料");
}
}).subscrible(new Observer<String>() {//老板招员工
@Override
public void onNext(String s) {//员工收到资料的方法
Log.e("MainActivity_LOG", "onNext: 收到资料开始干活了:" s);
}
});
手写简单的Rxjava 到此结束,可以去试试打印能不能出来,下篇继续手写,加入一个map操作符
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfjcjih
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01