91. EventsBus:
3.0之前:
http://blog.youkuaiyun.com/harvic880925/article/details/40660137
-------------------------------
如何使用:
//1.注册 (A)
EventBus.getDefault().register(this);
2. //取消注册 (A)
EventBus.getDefault().unregister(this);
3. 定义Event类,通过属性来传递数据
4. 定义发布处理类 (A)
@Subscribe(threadMode = ThreadMode.MAIN)
public void playMusict(ThreeEvent threeEvent){
Person p= threeEvent.getPerson();
// Toast.makeText(this,p.getAge(),Toast.LENGTH_LONG).show();
Log.e("denganzhi1",threeEvent.getPerson().getName());
}
(B)
5. EventBus.getDefault().post(
new FirstEvent("FirstEvent btn clicked"));
----------------------------
EventBus3.0使用:
最新版本3.0和前面不兼容
EventsBus使用的5个步骤
EventsBus3.0以后新特性:
1. 方法名,不需要onEvent开头
2.
方法的线程模式 ThreadMode 可以配置,这两个方法通用一个参数,
可以配置优先级proritity,值越大,优先收到
@Subscribe(threadMode = ThreadMode.MAIN,sticky = false,priority = 80)
@Subscribe(threadMode = ThreadMode.BACKGROUND)
@Subscribe(threadMode = ThreadMode.ASYNC)
@Subscribe(threadMode = ThreadMode.POSTING)
POSTING:在发送线程上处理接收事件,以保证最小开销。使用过程中应避免在主线程发送事件以造成线程阻塞。
*MAIN:在Android主线程(UI线程)处理接收事件。由于在主线程处理事件,所以在使用过程中应避免执行耗时操作以造成线程阻塞。
BACKGROUND:后台线程上处理接收事件,若在非主线程发送事件,则直接在当前线程处理接收。
*ASYNC:单独线程上处理接收事件,与后台线程及主线程独立。