RxJava
RxJava是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。 Rx即ReactiveExtensions,是由微软提出的一个综合了异步和基于事件驱动编程类库,使用可观察序列和LinQ-style查询操作,RxJava是其Java实现。
总的来说,RxJava可以简化和异步编程相关的方方面面,在Android和其他客户端开发中应用十分广泛,但是上手难度较高。
观察者和被观察者
上一篇笔记介绍了回调函数,其中button可以看做一个被观察者,button被点击一次,就会发送一个事件,而处理事件的回调函数就是观察者。在RxJava中,有两个对象:Observer和Obervable,对应观察者和被观察者。两者建立起观察/被观察的关系的操作,叫做「订阅(subscribe)」。我们现在使用RxJava分别创建一个Observer和Observable,并使用被观察者订阅观察者:
//创建被观察者
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>()
{
@Override
public void call(Subscriber<? super String> subscriber)
{
subscriber.onNext("hello1");
subscriber.onNext("hello2");
subscriber.onNext("hello3");
subscriber.onCompleted();
}
});
//创建观察者
Subscriber<String> subscriber = new Subscriber<String>()
{
@Override
public void onCompleted()
{
System.out.println("completed");
}
@Override
public void onError(Throwable throwable)
{
}
@Override
public void onNext(String s)
{
System.out.println(s);
}
};
//订阅
observable.subscribe(subscriber);
代码说明
- Observable:传入了一个函数,包含了向Observer发送的事件。
- Subscriber:Subscriber是Observer的子抽象类,实际使用中建议使用Subscriber,其中实现的onNext()等方法,代表事件回调,事件队列完成回调,发生错误回调。
运行结果
hello1
hello2
hello3
completed
Process finished with exit code 0
术语总结
- Oberver(观察者):决定事件触发时的行为。
- Observable(被观察者,事件源):决定什么时候触发事件以及触发怎样的事件。
- subscribe(订阅):连接Observer和Observable,Observable订阅Observer。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。