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:分别封装发布者和订阅者的数据结构

《Android进阶之光》--事件总线的更多相关文章

  1. [置顶] 曙光到来,我的新书《Android进阶之光》已出版

    独立博客版本请点击这里 由来 2016年我开始建立了自己的知识体系,所有的文章都是围绕着这个体系来写,随着这个体系的慢慢成长,开始有很多出版社联系我写书,因为比较看好电子工业出版社,就顺理成章的开始了 ...

  2. 《Android进阶之光》--Material Design

    接上篇<Android进阶之光>--Android新特性 No1: 组件: 1)底部工作条-Bottom Sheets 2)卡片-Cards 3)提示框-Dialogs 4)菜单-Menu ...

  3. 《Android进阶之光》--注解与依赖注入框架

    No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No ...

  4. 《Android进阶之光》--RxJava实现RxBus

    事件总线RxBus,替代EventBus和otto 1)创建RxBus public class RxBus{ private static volatile RxBus rxBus; private ...

  5. Android进阶之光-第1章-Android新特性-读书笔记

    第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...

  6. 《Android进阶之光》--Android新特性

    Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview ...

  7. 《Android进阶之光》--RxJava

    No1: RxJava使用 dependencies{ compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2. ...

  8. 《Android进阶之光》--Dagger2

    No1: Project的build.gradle文件添加 buildscript{ dependencies{ ...classpath 'com.neenbedankt.gradle.plugin ...

  9. 《Android进阶之光》--ButterKnife

    No1: 添加依赖库 Project的build.gradle文件添加 buildscript{ ... dependencies{ ... classpath 'com.neenbedankt.gr ...

随机推荐

  1. luogu P3576 [POI2014]MRO-Ant colony

    传送门 一群蚂蚁能被吃,也就是走到指定边的两端点之一要走到另一端点时有\(k\)只,我们可以从这两端点逆推,记两个值为走到某个点时最后会被吃掉\(k\)只蚂蚁的蚂蚁数量范围,式子下面有,很好理解(雾) ...

  2. mysql外键(FOREIGNKEY)使用介绍

    原文地址:http://www.2cto.com/database/201501/367791.html 一.基本概念 1.MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种.不 ...

  3. proxysql 系列~审核功能

    一 简介:今天我们来探讨下具体的审核功能 二 平台审计功能 一 proxysql 设置  set mysql-eventslog_filename = '/data/ProxySQL/log/sql. ...

  4. python - getattr 与 getattribute 机制

    #__getattribute__ class Foo(): def __init__(self,name): self.name = name def __getattr__(self, item) ...

  5. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165320

    下载源 Kali官网 下载安装过程是按照链接博客的操作完成的 虚拟机VMware安装Kali 安装成功截图 安装VM Tools 首先进入虚拟机,默认用户名为root,密码为安装过程中自己设置的. 在 ...

  6. Spring+SpringMVC+mybatis整合以及注解的使用(三)

    1.包结构:

  7. Docker三要素

    一.镜像(Image) Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器. Docker 面向对象 镜像 类(class) 容器 实例对象 ...

  8. centos6.7安装系统后看不到网卡无法配置IP的解决办法

    新安装centos6.7后发现/etc/sysconfig/network-scripts目录下没有eth0的网卡配置,通过ifconfig可以看到eth0的硬件地址 于是新建网卡输入一下内容 # c ...

  9. 100以内奇偶数(for循环)

  10. 如何用Python写一个贪吃蛇AI

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...