前言
最近又要跨Activity更新视图了,但我再也不想用OnActivityResult()这个方法了,虽说广播也是不错的解决方案,但据说广播用多了也很混乱,于是开始学习事件总线。
至于用什么事件总线,RxBus,这是毫无疑问的。一来用过RxJava之后爱不释手,二来感觉EventBus也过气了。
看了几篇关于RxBus的博客,发现对于未曾使用过EventBus的同学来说要弄懂RxBus还是有那么点难度,但学会之后发现真的超级好用,所以此文写给那些未曾使用过EventBus但是对RxBus感兴趣的同学。
这里是一些相关博客,建议看完本文再回头看。
用RxJava实现事件总线(Event Bus)
RxBus真的能替代EventBus吗?
Implementing an Event Bus With RxJava - RxBus
另外附上一篇RxJava的经典讲解:
给 Android 开发者的 RxJava 详解
Demo
https://github.com/XunMengWinter/SimpleRxBus
一个非常简单的Demo,只有两个Activity,在RxBusActivity中点击按钮即可更新MainActivity里的视图,无需考虑生命周期,无需重写onActivityResult方法。
实现
环境配置:为项目引入RxJava,并将RxBus类拷贝到项目中(Demo中使用的是Yokey大神封装的RxBus)。
然后跟着Demo,三步即可。
- 新建一个类,用于确认事件的类型。
- 在MainActivity的onCreate()方法中订阅事件(即接受回调),在onDestroy()方法中取消订阅。
- 在RxBusActivity中的按钮点击事件中发布事件。
就是这么简单清晰,再也不需要重写烦人的onActivityResult()了~
尾巴
重要的事情说三次,Demo Demo Demo