Android事件总线分发库的使用
2016-08-23 20:00
344 查看
一 事件总线分发库EventBus和Otto的简介及对比
1.什么是事件总线管理:
将事件放到队列里,用于管理和分发
保证应用的各个部分之间高效的通信及数据、事件分发
模块间解耦
2. Event Bus是一个发布 / 订阅的事件总线。Event Bus模式 — 也被称为Message Bus或者发布者/订阅者(publisher/subscriber)模式 — 可以让两个组件相互通信,但是他们之间并不相互知晓。基于事件总线管理/订阅/分发模式的。事件响应有更多的线程选择,EventBus可以向不同的线程中发布事件。EventBus支持 Sticky Event。使用时需要先注册订阅,然后向订阅者分发消息数据即可。包含4个成分:发布者,订阅者,事件,总线。订阅者可以订阅多个事件,发送者可以发布任何事件,发布者同时也可以是订阅者。分订阅、注册、发布、取消注册等步骤。
二 Event Bus的基本用法
1.订阅、注册、发布、取消注册。
注册:
EventBus.getDefault().register(this);
EventBus.getDefault().register(new MyClass());
//注册:三个参数分别是,消息订阅者(接收者),接收方法名,事件类
EventBus.getDefault().register(this,"setTextA",SetTextAEvent.class);
取消注册:
EventBus.getDefault().unregister(this);
EventBus.getDefault().unregister(new MyClass());
订阅处理数据:
public void onEventMainThread{}
public void onEvent(AnyEventType event) {}
onEventPostThread、onEventBackgroundThread、onEventAsync
发布:
EventBus.getDefault().postSticky(new SecondActivityEvent("Message From SecondActivity"));
EventBus.getDefault().post(new ChangeImgEvent(1));
三 EventBus的实际项目应用案例
1.什么是事件总线管理:
将事件放到队列里,用于管理和分发
保证应用的各个部分之间高效的通信及数据、事件分发
模块间解耦
2. Event Bus是一个发布 / 订阅的事件总线。Event Bus模式 — 也被称为Message Bus或者发布者/订阅者(publisher/subscriber)模式 — 可以让两个组件相互通信,但是他们之间并不相互知晓。基于事件总线管理/订阅/分发模式的。事件响应有更多的线程选择,EventBus可以向不同的线程中发布事件。EventBus支持 Sticky Event。使用时需要先注册订阅,然后向订阅者分发消息数据即可。包含4个成分:发布者,订阅者,事件,总线。订阅者可以订阅多个事件,发送者可以发布任何事件,发布者同时也可以是订阅者。分订阅、注册、发布、取消注册等步骤。
二 Event Bus的基本用法
1.订阅、注册、发布、取消注册。
注册:
EventBus.getDefault().register(this);
EventBus.getDefault().register(new MyClass());
//注册:三个参数分别是,消息订阅者(接收者),接收方法名,事件类
EventBus.getDefault().register(this,"setTextA",SetTextAEvent.class);
取消注册:
EventBus.getDefault().unregister(this);
EventBus.getDefault().unregister(new MyClass());
订阅处理数据:
public void onEventMainThread{}
public void onEvent(AnyEventType event) {}
onEventPostThread、onEventBackgroundThread、onEventAsync
发布:
EventBus.getDefault().postSticky(new SecondActivityEvent("Message From SecondActivity"));
EventBus.getDefault().post(new ChangeImgEvent(1));
三 EventBus的实际项目应用案例
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import de.greenrobot.event.EventBus; /** * EventBus的实际项目案例演示 * * @author Administrator * */ public class MainActivity extends Activity { private TextView tv_content; private Button btn_send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_content = (TextView) this.findViewById(R.id.tv_content); btn_send = (Button) this.findViewById(R.id.btn_send); btn_send.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {// 发送数据事件 MyEvent my = new MyEvent(); my.setType("1"); my.setContent("1内容"); EventBus.getDefault().post(my); } }); EventBus.getDefault().register(this); } public void onEvent(MyEvent event) { if (event.getType().equals("0")) { tv_content.setText(event.getContent()); } } public void onEventMainThread(MyEvent event) { if (event.getType().equals("1")) { tv_content.setText(event.getContent()); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); EventBus.getDefault().unregister(this); } }
相关文章推荐
- 45、Android事件总线分发库的使用
- Android事件总线分发库的使用EventBus(和Otto一样,只是效率高点)
- Android 事件总线Otto使用入门一
- Android事件总线 Otto框架使用
- Android事件分发07——TouchDelegate的使用与解析
- Android事件分发08——TouchDelegate的使用的一个示例与问题分析
- Android事件总线分发库EventBus3.0的简单讲解与实践
- Android事件总线之EventBus3.0基本使用
- Android事件总线——EventBus的使用
- Android事件总线EventBus 3.0的基本使用
- android中Otto事件总线框架的使用
- Android RxJava使用介绍(3) RxJava的操作符及Android事件总线
- 安卓Android事件总线EventBus简单使用
- android事件总线EventBus3.0简单使用
- android事件总线EventBus3.0使用方法详解
- Android神器:高效事件通信总线EventBus,简例讲解,进阶中高级工程师必看!(附带碎片Fragment高级使用技巧)
- android事件总线EventBus3.0使用方法详解
- Android中使用事件总线的优缺点
- Android事件总线AndroidEventBus的使用