EventBus
16lz
2021-01-26
1、简介
1.1. EventBus是一个Android端的publish/subscrlbe消息总线,简化了应用程序各组件间、组件与后台线程间的通信,比如请求网络,等网络返回时通过Handler或者BroadCast通知UI,两个Fragment之间需要通过Listner通信,这些需求都可以通过EventBus实现。
2、下载地址
1.2. https://github.com/greenrobot/EventBus
1.3. compile 'org.greenrobot:eventbus:3.0.0'
3、使用步骤
1、添加jar包或者添加依赖
2、注册事件 EventBus.getDefault().register(this);
3、解除祖册 EventBus.getDefault.unregister(this);
4、构造发送消息类
5、发布消息
EventBus.getDefault().post(new MessageEvent(”aaa“,“123456”));
6、接收消息
ThreadMode.Main 表示这个方法在主线程中执行
ThreadMode.BACKGROUND 表示这个方法在后台执行,不能并发处理
ThreadMode.ASYNC 也表示在后台执行,可异步并发处理
ThreadMode.POSTING 表示该方法和消息发送在同一个线程中执行
4、粘性事件
之前说的使用方法,都需要先注册(register)再post才能接收到事件;
1) 构造发送消息类
2)发布消息
EventBus.getDefault().postSticky(new StickyEvent(“我是粘性事件”));
3)接收消息
4)注册
EventBus.getDefault().register(XActivity.this);
5)解注册
5、例子
1、主线程中发送事件并接收
// 1、注册事件 EventBus.getDefault().register(MainActivity.this);
@Override protected void onDestroy() { super.onDestroy();// 2、解注册 EventBus.getDefault().unregister(MainActivity.this); }
// 3、创建发送消息类public class MessageEvent { public String name; public MessageEvent(String name) { this.name = name; }}
// 4、发送消息 EventBus.getDefault().post(new MessageEvent("主线程发送的消息!"));
// 5.接收消息 @Subscribe(threadMode = ThreadMode.MAIN)//主线程中接收 public void MessageEventBusRece(MessageEvent event){ mTvEventBusRes.setText(event.name); }
2、粘性事件的发送并接收
//11、创建一个粘性事件public class StickEventMessage { public String Msg; public StickEventMessage(String msg) { Msg = msg; }}
//22、发送粘性事件 EventBus.getDefault().postSticky(new StickEventMessage("粘性事件!!!!!"));
// 33、接收粘性事件( @Subscribe(threadMode = ThreadMode.MAIN, sticky = true ****的注解一定要写,sticky标记设置为 ture)) @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void StickyEvent(StickEventMessage message) {// 显示接收数据 mTvEventBusRes.setText(message.Msg); }
// 44.注册粘性事件(**不要多次注册故设置Falag) if (isFalag) { EventBus.getDefault().register(EventBusSendActivity.this); isFalag = false; }
// 55.解注册
@Overrideprotected void onDestroy() { super.onDestroy(); EventBus.getDefault().removeAllStickyEvents(); EventBus.getDefault().unregister(this);}
更多相关文章
- Android(安卓)RecyclerView单击、长按事件:基于OnItemTouchListe
- android开源项目之OTTO事件总线(一)
- Android(安卓)电话系统框架介绍
- Android(安卓)| 如何给Fragment里的button添加监听事件
- Android简单发送邮件(可带附件)
- android 广播接收者--BroadcastReceiver
- 自定义ViewGroup实现瀑布流效果
- android input 命令总结
- android中的广播接收实现总结