在RxJava中,BehaviorSubject是一种特殊的Subject,它会对每个订阅者发出相同的值。下面是一个示例代码:
import io.reactivex.subjects.BehaviorSubject;
public class BehaviorSubjectExample {
public static void main(String[] args) {
// 创建一个BehaviorSubject,并指定初始值为0
BehaviorSubject subject = BehaviorSubject.createDefault(0);
// 第一个订阅者
subject.subscribe(value -> System.out.println("Subscriber 1: " + value));
// BehaviorSubject发出的值将会被缓存,所以第一个订阅者会接收到初始值0
// BehaviorSubject继续发出新的值
subject.onNext(1);
// 第二个订阅者
subject.subscribe(value -> System.out.println("Subscriber 2: " + value));
// 第二个订阅者也会收到之前发出的最新值1
// BehaviorSubject继续发出新的值
subject.onNext(2);
// 所有订阅者都会收到最新的值2
}
}
在上面的示例代码中,我们使用BehaviorSubject.createDefault(0)创建一个初始值为0的BehaviorSubject。然后,我们订阅了这个BehaviorSubject两次,并在每次订阅时打印出收到的值。
当我们调用subject.onNext(1)发出新的值时,第一个订阅者会收到新的值1。接着,我们再次订阅了BehaviorSubject,并打印出收到的值。第二个订阅者会收到之前发出的最新值1。
最后,我们再次调用subject.onNext(2)发出新的值,所有订阅者都会收到最新的值2。
总结:BehaviorSubject对每个订阅发出相同的值,包括初始值和之后的值。