No1:

EventBus三要素:

1)Event:事件

2)Subscriber:事件订阅者

3)Publisher:事件发布者

No2:

EventBus的4种ThreadMode(线程模型):

1)POSTING(默认):该事件是在哪个线程发布出来的,事件处理函数就会在哪个线程中运行

2)MAIN:事件的处理会在UI线程中执行

3)BACKGROUND:在新线程或者发布的子线程中执行,禁止进行UI更新操作

4)ASYNC:在新建的子线程中执行,禁止进行UI更新操作

No3:

EventBus源码解析

EventBus.getDefault()->(单例模式)

new EventBus()->

EventBus(EventBusBuilder)->(建造者模式)

register->

SubscriberMethodFinder.findSubscriberMethods->findUsingInfo->getSubscriberInfo->findUsingReflectionInSingleClass->

subscribe->

...

No4:

otto使用

compile 'com.squareup:otto:1.3.8'

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

public class OttoBus extends Bus{private volatile static OttoBus bus;private OttoBus(){}public static OttoBus getInstance(){if(bus == null){synchronized(OttoBus.class){if(bus==null){bus = new OttoBus();}}}return bus;}
}

Bus bus = OttoBus.getInstance();
bus.register(this);
bus.unregister(this);@Subscribe
public void setContent(BusData data){tv_message.setText(data.getMessage());
}OttoBus.getInstance().post(new BusData("刘望舒的博客更新了"));

No5:

Otto主要类的功能

1)Produce、Subscribe:发布者和订阅者注解类

2)Bus:事件总线类,用来注册和取消注册,维护发布-订阅模型,并处理事件调度分发

3)HandlerFinder、AnnotatedHandlerFinder:用来查找发布者和订阅者

4)EventProducer、EventHandler:分别封装发布者和订阅者的数据结构

转载于:https://www.cnblogs.com/anni-qianqian/p/8510442.html

《Android进阶之光》--事件总线相关推荐

  1. 《android进阶之光》——事件总线(上)

    今日阅读:<android进阶之光>的事件总线部分,整理如下 事件总线知识点: 1.EventBus:就是事件,可以是任意对象 2.Subscriber:事件的订阅者 3.Publishe ...

  2. Android进阶三部曲 第一部《Android进阶之光》已出版(内含勘误)

    独立博客版本请点击这里 勘误帖请点击这里 源码地址:https://github.com/henrymorgen/android-advanced-light 进阶三部曲第二部:http://liuw ...

  3. 进阶三部曲第一部《Android进阶之光》第2版已出版

    本文首发于微信公众号「刘望舒」 其实<Android进阶之光>第二版已经在2021年4月就出版了,但是今天才发现,我去,没在CSDN发文,今天补上~~ 以下是正文 其实不打算出<An ...

  4. 《Android进阶之光》Horizontal 读书笔记

    <Android进阶之光>Horizontal 读书笔记 public class HorizontalView extends ViewGroup {private int lastIn ...

  5. 《Android进阶之光》续作内容简介

    <Android进阶之光>续作的书名现在还没有定,目前已经完稿,预计会在9月出版.本书基于Android8.0,理念和<Android开发艺术探索>相近,是将源码和应用开发相结 ...

  6. 《android进阶之光》——事件总线(下)

    今天看了这本书关于事件总线的剩余部分,主要讲的是otto. otto与EventBus用法差不多,不同的地方是: 1.otto不是单例模式的,每次使用都要创建一个实例,建议使用的时候用单例模式包起来 ...

  7. Android进阶之光 读书笔记

    第一章, Android 5.6.7新特性 1.RecycleView的自定义分割线 public class DividerItemDecoration extends RecycleView.It ...

  8. Android开源框架——事件总线otto

    开源官网:https://github.com/square/otto guide:http://square.github.io/otto/ otto 框架就是事件分发总线. 1.0 为什么要使用事 ...

  9. Android开源框架——事件总线 EventBus3.0讲解

    开源项目地址 官网:https://github.com/greenrobot/EventBus 介绍 EventBus主要使用了观察者模式设计方案.主要替代Intent.Handler. Broad ...

最新文章

  1. 将二进制流转换为图片
  2. SQL SERVER 2008不能修改表的解决方法(增加字段、修改字段名)(未解决)
  3. 最小拍有纹波系统仿真实验matlab代码,最小拍控制器设计.doc
  4. 使用G1后报错-CircuitBreakingException: [parent] Data too large
  5. go语言一个包含nil指针的接口不是nil接口的理解
  6. Spring中的@ImportResource
  7. Seasonal-ARIMA模型
  8. JSP九大内置对象以及作用
  9. linux中tailf命令详解,linux tailf命令详解
  10. 短视频剪辑入门技巧,简单却重要
  11. STM32 FFT 音频处理
  12. VsCode模仿简单百度网页(html)
  13. nginx -s reopen 命令小解
  14. tp6 thinkswoole 使用极光curl请求时报错
  15. win10的系统mysql服务器地址,win10的系统mysql服务器地址
  16. 【20保研】热忱欢迎全国2020届优秀本科毕业生免试攻读重庆大学研究生
  17. cursor的所有样式
  18. 【单片机毕业设计】【mcuclub-cl-015】基于单片机的地铁到站检测的设计
  19. HA高可用集群与RHCS集群套件
  20. android调用系统拍照、相册

热门文章

  1. 你真的会用Gson吗?Gson使用指南(三)
  2. http://127.0.0.1/thinkphp5/public/index/teacher/delete/id/1.html 这样的URL下,页面收不到get参数...
  3. js new Date()
  4. vmware克隆linux虚拟机网卡无法上网的解决办法
  5. inetd -- internet超级服务器
  6. WPF Unleashed Chapter 2:XAML Demystified 翻译(第二部分)
  7. Repeater 双向排序
  8. MATLAB学习笔记(十七)
  9. 网页HTML5制作flex布局骰子,CSS3的Flexbox骰子布局的实现及分析
  10. oracle exp调过坏块,无备份坏块处理(跳过方式)