RxBus简单使用

RxBus并不是一个库,而是一种模式。相信大多数开发者都使用过EventBus,作为事件总线通信库,如果你的项目已经加入RxJava和EventBus,不妨用RxBus代替EventBus,以减少库的依赖。
一、添加RxJava和RxAndroid依赖

 compile 'io.reactivex:rxjava:1.1.0'compile 'io.reactivex:rxandroid:1.1.0'

二、 新建RxBus类

public class RxBus {private static volatile RxBus mInstance;private final Subject bus;public RxBus(){bus = new SerializedSubject<>(PublishSubject.create());}/*** 单例模式RxBus** @return*/public static RxBus getInstance(){RxBus rxBus2 = mInstance;if (mInstance == null){synchronized (RxBus.class){rxBus2 = mInstance;if (mInstance == null){rxBus2 = new RxBus();mInstance = rxBus2;}}}return rxBus2;}/*** 发送消息** @param object*/public void post(Object object){bus.onNext(object);}/*** 接收消息** @param eventType* @param * @return*/public  Observable toObserverable(Class eventType){return bus.ofType(eventType);}
}

三、创建你需要发送的事件类

public class StudentEvent {private String id;private String name;public StudentEvent(String id, String name) {this.id = id;this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

四、发送事件

RxBus.getInstance().post(new StudentEvent("007","小明"));

五、接收事件

rxSbscription=RxBus.getInstance().toObserverable(StudentEvent.class).subscribe(new Action1() {@Overridepublic void call(StudentEvent studentEvent) {textView.setText("id:"+ studentEvent.getId()+"  name:"+ studentEvent.getName());}});

六、取消订阅

@Overrideprotected void onDestroy() {if (!rxSbscription.isUnsubscribed()){rxSbscription.unsubscribe();}super.onDestroy();}

七、MainActivity整体代码

public class MainActivity extends AppCompatActivity {TextView textView;Subscription rxSbscription;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.button);//接收事件rxBusObservers();//监听跳转rxBusPost();}//监听跳转private void rxBusPost() {textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//发送事件RxBus.getInstance().post(new StudentEvent("007", "小明"));}});}//接收事件private void rxBusObservers() {//rxSbscription是Sbscription的对象,// 我们这里把RxBus.getInstance().toObserverable(StudentEvent.class)赋值给rxSbscription以方便生命周期结束时取消订阅事件rxSbscription = RxBus.getInstance().toObserverable(StudentEvent.class).subscribe(new Action1() {@Overridepublic void call(StudentEvent studentEvent) {textView.setText("id:" + studentEvent.getId() + "  name:" + studentEvent.getName());}});}@Overrideprotected void onDestroy() {if (!rxSbscription.isUnsubscribed()) {rxSbscription.unsubscribe();}super.onDestroy();}
}

这里写图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部