闲在家里?看看EventBus解析,跟我一起一起手写EventBus

本文详细介绍了Android消息总线库EventBus的使用,包括基础使用、进阶特性如线程模式、事件优先级和黏性事件,并深入解析了EventBus的源码,帮助开发者更好地理解和应用EventBus。
摘要由CSDN通过智能技术生成

前言

本来通知这周一复工的,结果好像事情并没有简单,又推迟到下周1了,还要在家办公一段时间,昨天有粉丝问我怎么没有更文,昨天分批次去公司开了一下午的会议,索性大家人数分批开会都带了口罩,所以一点都不慌,大家出门都记得戴口罩,勤洗手~(在家办公还是蛮快乐的,可以边唱歌边办公_

前几天更新了OKHTTPRetrofit的解析,今天更最后一篇EventBus的解析。

把最近的知识也整理汇总了一份,打算和之前的知识做个汇总的PDF,有兴趣的可以借鉴学习一下

上图知识汇总的PDF相关内容后续GitHub更新,想冲击金三银四的小伙伴可以找找看看,欢迎star
顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找
https://github.com/xiangjiana/Android-MS
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我联系我获取

一、EventBus简介

EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内 各组件间、组件与后台线程间的通信。

作为一个消息总线主要有三个组成部分:
事件(Event): 可以是任意类型的对象。通过事件的发布者将事件进行传递。
事件订阅者(Subscriber): 接收特定的事件。
事件发布者(Publisher): 用于通知 Subscriber 有事件发生。可以在任意线程任 意位置发送事件。

上图解释了整个EventBus的大概工作流程:事件的发布者(Publisher)将事件 (Event)通过post()方法发送。EventBus内部进行处理,找到订阅了该事件 (Event)的事件订阅者(Subscriber)。然后该事件的订阅者(Subscriber)通过 onEvent()方法接收事件进行相关处理(关于onEvent()EventBus 3.0中有改动, 下面详细说明)。

二、EventBus的简单使用
1、把EventBus依赖到项目

build.gradle添加引用

  compile 'de.greenrobot:eventbus:3.0.0-beta1'
2、构造事件(Event)对象。也就是发送消息类 每一个消息类,对应一种事件。这 里我们定义两个消息发送类。后面讲解具体作用。
  public class NewsEvent { 
     private String message; 

     public NewsEvent(String message) { 
        this.message = message; 
     }

     public String getMessage() { 
        return message; 
     }
     public void setMessage(String message) { 
        this.message = message; 
     } 
  }
  public class ToastEvent { 
     private String content; 

     public ToastEvent(String content) { 
        this.content = content; 
     }
     public String getContent() { 
        return content; 
     }
    
     public void setContent(String content) { 
        this.content = content; 
     } 
  }
3、注册/解除事件订阅(Subscriber)
  EventBus.getDefault().register(this);//注册事件 其中this代表订阅者

具体注册了对什么事件的订阅,这个需要onEvent()方法来说明。在EventBus 3.0之 前,onEvent()方法是用来接收指定事件(Event)类型对象,然后进行相关处理操 作。在EventBus 3.0之后,onEvent()方法可以自定义方法名,不过要加入注解 @Subscribe

  @Subscribe 
      public void onToastEvent(ToastEvent event){ 
         Toast.makeText(MainActivity.this,event.getContent(),Toas t.LENGTH_SHORT).show();
   }

通过register(this)来表示该订阅者进行了订阅,通过onToastEvent(ToastEvent event)表示指定对事件ToastEvent的订阅。到这里订阅就完成了。

需要注意的是: 一般在onCreate()方法中进行注册订阅。在onDestory()方法中进行 解除订阅。

  @Override 
      protected void onDestroy() { 
          super.onDestroy(); 
          EventBus.getDefault().unregister(this); 
  }
4 、发送消息 订阅已经完成,那么便可以发送订阅了。
   EventBus.getDefaul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值