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);}


更多相关文章

  1. Android(安卓)RecyclerView单击、长按事件:基于OnItemTouchListe
  2. android开源项目之OTTO事件总线(一)
  3. Android(安卓)电话系统框架介绍
  4. Android(安卓)| 如何给Fragment里的button添加监听事件
  5. Android简单发送邮件(可带附件)
  6. android 广播接收者--BroadcastReceiver
  7. 自定义ViewGroup实现瀑布流效果
  8. android input 命令总结
  9. android中的广播接收实现总结

随机推荐

  1. Android(安卓)View的滚动scroll 、androi
  2. Android(安卓)registerContentObserver
  3. 腾讯Bugly的使用
  4. Unity调用Android。。。哈哈。。可以干坏
  5. 【Android系统视窗模块】Android(安卓)8
  6. 安卓数据库连接解决办法 ,避免 sqlite3 d
  7. android与H5交互方法简介
  8. adnroid开发环境的搭建
  9. android MediaScanner详解-扫描得到多媒
  10. Android(安卓)Studio无法运行模拟器或者