Android事件总线分发库的使用EventBus(和Otto一样,只是效率高点)
2016-06-30 10:42
591 查看
Event Bus是一个发布 / 订阅的事件总线。
Event Bus模式 — 也被称为Message Bus或者发布者/订阅者(publisher/subscriber)模式
— 可以让两个组件相互通信,但是他们之间并不相互知晓。
基于事件总线管理/订阅/分发模式的。事件响应有更多的线程选择,
EventBus可以向不同的线程中发布事件。EventBus支持 Sticky Event。
使用时需要先注册订阅,然后向订阅者分发消息数据即可。
包含4个成分:发布者,订阅者,事件,总线。订阅者可以订阅多个事件,
发送者可以发布任何事件,发布者同时也可以是订阅者。分订阅、注册、发布、取消注册等步骤。
Event Bus的基本用法
分订阅、注册、发布、取消注册。
注册:
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));
下面是一个例子:
1导jar包
2核心代码:
发送消息数据的Activity
http://download.csdn.net/detail/zhaihaohao1/9563601
EventBus实现fragment之间传递数据
http://download.csdn.net/detail/zhaihaohao1/9563663
Event Bus模式 — 也被称为Message Bus或者发布者/订阅者(publisher/subscriber)模式
— 可以让两个组件相互通信,但是他们之间并不相互知晓。
基于事件总线管理/订阅/分发模式的。事件响应有更多的线程选择,
EventBus可以向不同的线程中发布事件。EventBus支持 Sticky Event。
使用时需要先注册订阅,然后向订阅者分发消息数据即可。
包含4个成分:发布者,订阅者,事件,总线。订阅者可以订阅多个事件,
发送者可以发布任何事件,发布者同时也可以是订阅者。分订阅、注册、发布、取消注册等步骤。
Event Bus的基本用法
分订阅、注册、发布、取消注册。
注册:
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));
下面是一个例子:
1导jar包
2核心代码:
发送消息数据的Activity
<span style="font-size:18px;"><span style="font-size:18px;">/** * 发送数据 */ public class OtherActivity extends Activity { private Button btnOtherSend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_other); init(); myOclick(); } // 发消息 private void myOclick() { btnOtherSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().post(new FirstEvent("我是消息")); } }); } private void init() { btnOtherSend = (Button)findViewById(R.id.btnOtherSend); } }</span></span>接收消息数据的Activity
<span style="font-size:18px;"><span style="font-size:18px;">/** * 接收数据 */ public class MainActivity extends Activity { private Button btnToOther; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 注册 EventBus.getDefault().register(this); init(); myOnClick(); } // 接收消息 // 注意eventbus3.0的jar包要加@Subscribe @Subscribe public void onEventMainThread(FirstEvent event) { String msg = "onEventMainThread" + event.getMsg(); Log.e("1", "接收到的消息1:"+msg); } // 接收消息 // 注意eventbus3.0的jar包要加@Subscribe @Subscribe public void onEvent(FirstEvent event){ String msg = "onEventMainThread" + event.getMsg(); Log.e("1", "接收到的消息2:"+msg); } private void myOnClick() { // 跳转 btnToOther.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,OtherActivity.class)); } }); } @Override protected void onDestroy() { super.onDestroy(); // 取消注册 EventBus.getDefault().unregister(this); } private void init() { btnToOther = (Button)findViewById(R.id.btnToOther); } }</span></span>实体类
<span style="font-size:18px;"><span style="font-size:18px;">/** * 实体类 */ public class FirstEvent { private String mMsg; public FirstEvent(String msg) { mMsg = msg; } public String getMsg(){ return mMsg; } }</span></span>源码下载:
http://download.csdn.net/detail/zhaihaohao1/9563601
EventBus实现fragment之间传递数据
http://download.csdn.net/detail/zhaihaohao1/9563663
相关文章推荐
- Android上传文件到FTP
- Android学习笔记十三之LinearLayout布局
- Android项目重构
- android:sharedUserId
- Android之ProgressBar及其子类SeekBar和RatingBar(一)
- Android行情走势图
- android 简单登陆注册的实现
- Android 事件总线Otto使用入门一
- 使用Action、Data属性启动系统Activity
- android ant混淆时遇到的错误总结
- 单例模式的几种用法比较
- Data、Type属性与intent-filter配置
- Android在屏幕适配时出现异常java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1
- Android之LayoutInflater的使用
- DataBinding中如何使用Listener
- Android中数据库的简单运用
- android使用google gcm接收push消息需要注意的地方
- Android Bundle类 学习总结
- 浅析Android 开源框架ImageLoader的用法
- 简单实用的Android ORM框架TigerDB