EventBus Demo

参考资料:
http://greenrobot.org/eventbus/documentation/how-to-get-started/
http://blog.csdn.net/harvic880925/article/details/40660137
http://blog.csdn.net/yuanzeyao/article/details/38174537
http://a.codekk.com/detail/Android/Trinea/EventBus%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
https://github.com/greenrobot/EventBus

示例程序:
https://github.com/saragitshare/EventBusDemo.git


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种的问题。

你可能感兴趣的:(android,lib)