《Android进阶之光》--事件总线
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进阶之光》--事件总线的更多相关文章
- [置顶]
曙光到来,我的新书《Android进阶之光》已出版
独立博客版本请点击这里 由来 2016年我开始建立了自己的知识体系,所有的文章都是围绕着这个体系来写,随着这个体系的慢慢成长,开始有很多出版社联系我写书,因为比较看好电子工业出版社,就顺理成章的开始了 ...
- 《Android进阶之光》--Material Design
接上篇<Android进阶之光>--Android新特性 No1: 组件: 1)底部工作条-Bottom Sheets 2)卡片-Cards 3)提示框-Dialogs 4)菜单-Menu ...
- 《Android进阶之光》--注解与依赖注入框架
No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No ...
- 《Android进阶之光》--RxJava实现RxBus
事件总线RxBus,替代EventBus和otto 1)创建RxBus public class RxBus{ private static volatile RxBus rxBus; private ...
- Android进阶之光-第1章-Android新特性-读书笔记
第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...
- 《Android进阶之光》--Android新特性
Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview ...
- 《Android进阶之光》--RxJava
No1: RxJava使用 dependencies{ compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2. ...
- 《Android进阶之光》--Dagger2
No1: Project的build.gradle文件添加 buildscript{ dependencies{ ...classpath 'com.neenbedankt.gradle.plugin ...
- 《Android进阶之光》--ButterKnife
No1: 添加依赖库 Project的build.gradle文件添加 buildscript{ ... dependencies{ ... classpath 'com.neenbedankt.gr ...
随机推荐
- 后端python基础
- 电子邮件和URL输入控件
HTML5还引入了让用户输入邮箱地址和URL的输入控件.那些不支持这类输入控件的浏览器会把他们当成普通文本框来处理. <!DOCTYPE html> <!-- To change t ...
- 11、Logback日志框架介绍和SpringBoot整合实战 2节课
1.新日志框架LogBack介绍 简介:日志介绍和新日志框架Logback讲解 1.常用处理java的日志组件 slf4j,log4j,logback,common-logging 等 ...
- Mask RCNN 简单使用
涉及到的知识点补充: FasterRCNN:https://www.cnblogs.com/wangyong/p/8513563.html RoIPooling.RoIAlign:https://ww ...
- 文件&报表状态ID
def_filestatus Uploading=4 WaitingParse=6 Parsing=10 Completed=14 ParseError=1006 UploadError=1004 d ...
- IDEA测试结果查看
点击漏斗图标切换查看测试日志信息,点击,导出测试报告
- oracle11g客户端配置及使用(Windows系统)
一.安装Oracle客户端 本文环境: 操作系统:Windows XP Pro sp3(简体中文)32位 1. 首先去官网下载Oracle 11g (1) win32_11gR2_database_1 ...
- Laravel API 限速异常 HTTPException Too Many Attemps
最近线上 Laravel 错误日志发现了一个异常 HTTPException Too Many Attemps 而我一个同事在本地开发的过程中也频繁遇到这个异常.测试环境:Laravel 5.5. 网 ...
- OI中坑点总结
以下是我个人OI生涯中遇到的坑点的一个小总结,可能是我太菜了,总是掉坑里,请大佬勿喷 1,多重背包的转移的循环顺序 //默认每个物品体积为一(不想打码……) //dp[i]表示占用背包容量i所能获得的 ...
- 读取web.config和app.config配置文件
app.config: <add key="Password" value="123456"/> C#: string TQpwd ...