(八)RxJava:PublishSubject

博客首页   



 PublishSubject

    与普通的Subject不同,在订阅时并不立即触发订阅事件,而是允许我们在任意时刻手动调用onNext(),onError(),onCompleted来触发事件。
    可以看到PublishSubject
与普通的Subject最大的不同就是其可以先订阅事件,然后在某一时刻手动调用方法来触发事件,那么拿他又能做些什么?
    举个例子:当一个界面发生改变,通知另一个界面做出响应,以下是两个Fragment之间通讯的Demo
    1、首先在外部定义好公共的
PublishSubject
对象
PublishSubject<String> publishSubject = PublishSubject.create();
PublishSubjectTopFragment topFragment = new PublishSubjectTopFragment(publishSubject);
PublishSubjectBottomFragment bottom_Fragment = new PublishSubjectBottomFragment(publishSubject);
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fl_top,topFragment, "top")
.replace(R.id.fl_bottom, bottom_Fragment, "bottom")
.commit();
2、TopFragment中负责发生改变并发出信息
@OnClick(R.id.btn_send)
void sendToBottom(){
String result = et_input.getText().toString().trim();
publishSubject.onNext(result);
}
3、BottomFragment中接收到通知后,产生响应
publishSubject.subscribe(new Action1<String>() {
@Override
public void call(String s) {
tv_result.setText(s);
}
});

效果图:


源码: https://github.com/cn-ljb/rxjava_for_android

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值