EventBus Demo

1 篇文章 0 订阅
参考资料:

示例程序:


1 EventBus是基于订阅和发布的一种通信机制,使用流程如下:
注册订阅者 :     注册接受event的Object。  例如:  EventBus.getDefault().register(this);
发布消息 :     发布Event。例如:EventBus.getDefault().post(new Long(1000));
接受消息:      接受Event,并处理。例如:EventBus.getDefault().post(new Long(1000));

2 Activity 接受EventBus的消息,要注册以及及时注销该Activity Object。
通常在onCreate中注册:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eventbus_demo_layout);

ButterKnife.inject(this);
EventBus.getDefault().register(this);
}

通常在onStop或者onDestroy注销:
@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
3、 Fragment 接受EventBus的消息,要注册以及及时注销该Fragment Object。 
通常在onCreateView或者onStart中注册, 在onStop或者onDestroy中注销。

4 EventBus接受和处理消息(事件==消息)的模式有4种。
(1) eventbus-3.3.0
ThreadMode.POSTING:            发布事件和接收事件线程在同一个线程。默认可以不加Subscribe标识。
ThreadMode.MAIN:                发送方= 任何一个线程(包括主线程),接收方 =  UI线程。
ThreadMode.BACKGROUND:  如果发送方=  UI线程,接收方 = 子线程。 如果发送方=  子线程,接收方 = 同一个子线程。
ThreadMode.POSTING:            发送方= 任何一个线程(包括主线程),接收方 =  新的子线程。
说明:
eventbus-3.3.0中,订阅函数的必须添加“@Subscribe(threadMode = ThreadMode.POSTING)标识”
eventbus-3.3.0中,订阅函数的名称可以是任意的。

(2) 在eventbus-2.2.1中,
onEvent :                                    发布事件和接收事件线程在同一个线程。
onEventMainThread :                 发送方= 任何一个线程(包括主线程),接收方 = UI线程。
onEventBackgroundThread :      如果发送方= UI线程,接收方 = 子线程。 如果发送方=  子线程,接收方 = 同一个子线程。
onEventAsync                              发送方= 任何一个线程(包括主线程),接收方 =  新的子线程。

说明:
eventbus-2.2.1中,4种模式的对应订阅函数名是固定的。
eventbus-2.2.1中,4种模式的对应eventbus-3.3.0,只用方法上有点区别。

5、eventbus:3.0.0的行为完全不同于eventbus-2.2.1。原来不知道是作者修改了行为,还是引入了重大bug,后来发现是作者为了使用越规范和方便,增加了Subscribe标识。
6、Lib库的升级要严格测试,以免发生类似该demo种的问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值