Android RxJava的初次使用
早就听说RxJava很牛X ,也一直想去研究一下,买了一些大佬的书,介绍了一下RxJava的基本操作,但是奈何作为小白,理解能力有限只能自己边敲边领会喽,先学会使用,再去了解源码,是我的学习方法之一。看的再多,敲不出代码的都是扯淡。好了,不扯犊子了,开始撸一把吧!
一 . 首先,我们要差不多了解观察者模式吧,自己不理解的去看看EventBus的源码,大概就能搞得清楚。然后我们开始从对象说起吧,有观察者就有被观察者,那么如何获取被观察者的对象呢?我们通过制作第一个案例,被观察者发射一些数据,而我们的观察者接收一些数据,是否能够成功,实践出来再说吧!
1.创建被观察者,并且发射一些数据 // 1. 创建被观察者 Observable 对象 ,别说自己不会,很多代码都是自己生成的 Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception { // 被观察者发射数据 emitter.onNext("我是你大爷"); emitter.onNext("我是你二大爷"); emitter.onNext("我是你三大爷"); emitter.onNext("我是你四大爷"); emitter.onComplete(); } });
2.创建观察者对象,并且处理接受的数据。 //创建观察者对象 Observer<String> observer = new Observer<String>() { @Override public void onSubscribe(Disposable d) { Log.d(TAG, "开始采用subscribe连接"); } @Override public void onNext(String value) { Log.d(TAG, "对Next事件"+ value +"作出响应" ); } @Override public void onError(Throwable e) { Log.d(TAG, "对Error事件作出响应"); } @Override public void onComplete() { Log.d(TAG, "对Complete事件作出响应"); } };
3.订阅事件(为啥是被观察者订阅观察者,我也不知道先学会使用喽) observable.subscribe(observer);
二. 具体代码如下 public class UseRxJava extends AppCompatActivity{ private static final String TAG = "UseRxJava"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.list); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { establistObserverable(); } }); } private static void establistObserverable(){ // 1. 创建被观察者 Observable 对象 Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> emitter) throws Exception { emitter.onNext("我是你大爷"); emitter.onNext("我是你二大爷"); emitter.onNext("我是你三大爷"); emitter.onNext("我是你四大爷"); emitter.onComplete(); } }); //创建观察者对象 Observer<String> observer = new Observer<String>() { @Override public void onSubscribe(Disposable d) { Log.d(TAG, "开始采用subscribe连接"); } @Override public void onNext(String value) { Log.d(TAG, "对Next事件"+ value +"作出响应" ); } @Override public void onError(Throwable e) { Log.d(TAG, "对Error事件作出响应"); } @Override public void onComplete() { Log.d(TAG, "对Complete事件作出响应"); } }; observable.subscribe(observer); }
三. 我依赖的版本如下,大家可以体验一下 implementation 'io.reactivex.rxjava2:rxjava:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
四 .持续更新学习中……