丈夫志四海,万里犹比邻。这篇文章主要讲述android学习笔记--RxJava相关的知识,希望能为你提供帮助。
紧接上一篇博文,本篇介绍Rxjava,一个实现异步操作的库。
RxJava最核心的两个东西是Observables和Subscribers
1.Observables(被观察者,事件源)发出一系列事件
2.Subscribers(观察者)处理这些事件
这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等等)
一个Observable可以发出零个或者多个事件,知道结束或者出错。
每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。
Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。
eg.一个用RxJava来打印Hello World的程序
1.创建一个Observable:调用Observable.create
Observable< String> myObservable = Observable.create( new Observable.OnSubscribe< String> () { @Override public void call(Subscriber< ? super String> sub) { sub.onNext("Hello, world!"); sub.onCompleted(); } } );
也可以用简化版本:
Observable< String> myObservable = Observable.just("Hello, world!")
这里定义的Observable对象仅仅发出一个Hello World字符串,然后就结束。
2.创建Subscriber,用于处理Observable对象发出的字符串。
Subscriber< String> mySubscriber = new Subscriber< String> () { @Override public void onNext(String s) { System.out.println(s); }@Override public void onCompleted() { }@Override public void onError(Throwable e) { } };
简化版本:
Action1< String> onNextAction = new Action1< String> () { @Override public void call(String s) { System.out.println(s); } };
subscriber仅仅就是打印observable发出的字符串。
3.subscribe函数将myObservable对象和mySubscriber对象关联。完成了subscriber对observable的订阅。
myObservable.subscribe(mySubscriber);
【android学习笔记--RxJava】如果之前用的Action1的类,那么用下面的方法订阅:
myObservable.subscribe(onNextAction);
合成之前的简洁版本,可以这样写:
Observable.just("Hello, world!") .subscribe(new Action1< String> () { @Override public void call(String s) { System.out.println(s); } });
4.完成。现在mySubscriber订阅了myObservable,myObservable就是调用mySubscriber对象的onNext和onComplete方法,mySubscriber就会打印出Hello World!
以上是简单的RxJava的用法,下面来看一下MovieGuide中是如何使用RxJava:
在MovieGuide中,RxJava主要在迭代器类中使用
//todo
推荐阅读
- 学习Android的CH01
- Android程序员眼中世界上最遥远的距离
- 操作系统试题解析和答案解读|S6
- 操作系统试题介绍和解读|S5
- 操作系统试题分享和答案解释|S4
- 操作系统试题和面试题分享|S3
- C#中的匿名方法如何使用(用法示例)
- 编写一个函数,计算一个给定的int在链表中出现的次数
- 算法题(检查二叉树中的两个节点是否是表亲 |S2)