Otto:EventBus】的更多相关文章

Otto:EventBus 2014年6月20日 星期五 15:14 参考: http://www.mythroad.net/?p=4151 Otto 是Android系统的一个Event Bus模式类库.用来简化应用组件间的通信. 主要使用的类有com.squareup.otto.Bus类.@Produce.@Subscribe注解 @Subscribe 注解告诉Bus该函数订阅了一个事件,该事件的类型为该函数的参数类型: @Produce注解告诉Bus该函数是一个事件产生者,产生的事件类型为…
title: 源码阅读系列:EventBus date: 2016-12-22 16:16:47 tags: 源码阅读 --- EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的人,也多少借鉴过事件总线的用法.而且EventBus的代码其实是非常简单的,可以试着阅读一下. 源码阅读系列不采用对功能进行归类的方法进行阅读,而是采用一个刚开始阅读源码的视角,从我们平时的API调用,一步步的去理解设计意图和实现原理. 从这里开始 从这里开始吧,我们最常用的地方就是给一个函数添加上…
前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也没什么意思,还是老老实实打好基础吧,技术这东西不能心急. 在复习了 Android 跨进程.多线程通信的几种方式的基础上,为了调节下心情,我们接下来一起来学以致用,分析分析一些有名的 Android 事件总线框架. 首先拿 EventBus 开刀! 读完本文你将了解: EventBus 30 简介 Event…
IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法.EventBus定义了一个Dictionary容器来存放事件和处理该事件的对象(其实不是对象而是Factory,暂且这样理解无妨).其key是Type:在ABP使用Type表示不同的事件,具体而言这个type是EventData派生类的类型.EventData在ABP中有两个作用:第一用于封装事件数…
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现.对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构. Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式.手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和O…
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现.对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构. Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式.手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和O…
1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的. 从上图可知,核心就4个角色: 事件(事件源+事件处理) 事件发布者 事件订阅者 事件总线 实现事件总线的关键是: 事件总线维护一个事件源与事件处理的映射字典: 通过单例模式,确保事件总线的唯一入口: 利用反射完成事件源与事件处理的初始化绑定: 提供统一的事件注册.取…
1 研发背景 案例:我们在主页点收藏按钮,未登录状态,跳登录界面,在登录界面跳注册页面,注册成功,关闭注册页面,关闭登录页面,回到主页,刷新item列表和登录状态. 我们一般会用到发送广播和接收广播来实现.本地广播是相对消耗时间.空间最多的一种方式,是重量级的,消耗资源较多的一种方式.四大组件之一,许多系统级的事件都是通过广播来通知的.比如网络变化,电量变化,短信发送接收. 如果与系统相关的通知,还是选择本地广播.在广播的onreceive方法中,可以获得context,intent参数,有丰富…
上一篇研究了EventBus的使用方法,但随之而来的一系列问题也是值得思考,EventBus到底给项目带来了什么?它与Android原有的消息处理机制有什么区别和优缺点?项目在什么场景下采用EventBus会比较合适?因此,本篇就通过EventBus.BroadCast和Handler(Message)三者的比较解释这三个问题. 1.BroadCast 广播是相对消耗时间.空间最多的一种方式,但是大家都知道,广播是四大组件之一,许多系统级的事件都是通过广播来通知的,比如说网络的变化.电量的变化,…
概述 看源码是一件吃力又很爽的事情,昨天还被搞的一头雾水,今天忽然守得云开见月明.明白它设计意图的同时,感觉自己又提升了一步:) Orchard刚开始看往往毫无头绪,建议可以从Orchard.Framework&UnitTest入手,先弄明白底层框架机制,抽丝剥茧,一步一步农村包围城市.不用着急,说不定哪天睡觉一下子就理解了. 今天看一下它的事件通知模块的设计,相关类 1.IEventBus  事件总线接口 public interface IEventBus : IDependency { I…
事件总线框架 针对事件提供统一订阅,发布以达到组件间通信的解决方案. 原理 观察者模式. EventBus和Otto 先看EventBus的官方定义: Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality. 再看Otto官方定义: Otto is an event bus d…
同步发表于http://avenwu.net/ioc/2015/01/29/custom_eventbus Fork on github https://github.com/avenwu/support Android有广播和Receiver可以处理消息的传递和响应,要进行消息-发布-订阅,除此之外作为开发者现在也有其他类似的方案可以选择,比如EventBus和Otto,都是比较热门的三方库.那么这些三方库到底是怎么实现模块之间的解耦,使得消息可以再不同的系统组件之间传递呢? 源码剖析 由于是…
概述: EventBus是一款针对Android优化的发布/订阅事件总线. 主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service. 线程之间传递消息.优点是开销小,代码更优雅,以及将发送者和接收者解耦. --------------------------------------------------------------------------------------- 下载: 类库源码:https://github.com/g…
关联文章: EventBus 3.0 的特点与如何使用 源码分析 EventBus 3.0 如何实现事件总线 学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了,现在来总结下,从这个框架里我们可以学到些什么. 读完本文你将了解: EventBus 解决了什么问题 EventBus 的思想 EventBus 的编译时注解 EventBus 用到的设计模式 值得学习的细节 不足之处 感悟 首先看看 EventBus 解决了什么问题. EventBus 解决了什…
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这篇文章我们来揭开它神秘的面纱,看看在繁华的背后究竟是怎样的沧桑. 读完本文你将了解: 注解修饰订阅方法 编译时处理注解生成索引 创建 EventBus 最关键的两个属性 SubscriberMethod 订阅方法信息 Subscription 事件订阅总体 SubscriberMethodFinde…
当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消息感兴趣,那么我们通常采用的就是观察者模式,使用观察者模式有一个弊病就是部件之间的耦合度太高,在这里将会详细介绍Android中的解耦组件EventBus的使用. EventBus简介 Publisher-Subscriber这种设计模式在GoF中早就详细的解释.也是一种最常用不过的设计模式.而EventBus则是对于Publisher和Subscriber的一种实现,如…
EventBus 直译过来就是事件总线,它使用发布订阅模式支持组件之间的通信,不需要显式地注册回调,比观察者模式更灵活,可用于替换Java中传统的事件监听模式,EventBus的作用就是解耦,它不是通用的发布订阅系统,也不能用于进程间通信.可用于Android的EventBus库主要有这几个:Google出品的Guava,Guava是一个庞大的库,EventBus 只是它附带的一个小功能,因此实际项目中使用并不多.用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方…
简介 地址:https://github.com/greenrobot/EventBus EventBus是一个[发布 / 订阅]的事件总线.简单点说,就是两人[约定]好怎么通信,一人发布消息,另外一个约定好的人立马接收到你发的消息. EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息. 优点:开销小,代码更优雅,将发送者和接收者解耦. 用处:相信大…
1. ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于 Ice Cream Sandwich的自定义动作栏实现将自动围绕布局.能够让开发者轻松开发一款带…
现在网上讲解EventBus的文章大多数都是针对2.x版本的,比较老旧,本篇文章希望可以给大家在新版本上面带来帮助. EventBus 是专门为Android设计的用于订阅,发布总线的库,用到这个库的app很多,因为它有很多的优点.比如: 它可以简单Android组件之间的通信 它可以避免了Android四大组件复杂的生命周期处理 它可以让你的代码更为简洁. 先一起了解下如何使用,然后在分析它的源码,知道它的工作原理.我们直接来使用EventBus 3.0,3.x主要的一个新的特性就是使用了注解…
Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样.http://www.cnblogs.com/greentomlee/p/6025470.html 作者:修雨轩陈 @博客园 2 简介 开源项目地址: https://github.com/greenrobot/EventBus EventBus是一款针对Android优化的发布/订阅事件总线.主…
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module).其中13个依赖于Abp这个核心包.另外两个包(FluentMigration,Web.Resources)相对独立 Abp.AutoMapper: 实现对象之间的自动映射. Abp.EntityFramework:通过EntityFramework实现数据访问层. Abp.FluentMigra…
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现..太烂了.怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不了了.而且试着用MarkDown发了篇草稿,右边的侧边栏竟然被挤到屏幕下方了,还影响到了博客布局..不说了..简单修改下标题.代码直接发表. 概述及基本概念 **EventBus**是一个Androi…
文档目录 本节内容: EventBus 注入 IEventBus 获取默认实例 定义事件 预定义事件 处理完异常 实体修改 触发事件 处理事件 处理基类事件 处理程序异常 处理多个事件 处理程序注册 自动 手动 反注册 在C#里,一个类可以定义自己的事件,然后其它类可以注册它,当某些事情发生时,接收到通知.这对于桌面应用或单机的Windows服务非常有用.但是,对于一个Web应用,它就有点问题,因为对象在一个web请求里创建,并且它们生命周期都很短.所以就难于注册一些类事件,同时,直接注册另一个…
EventBus是一个通过发布.订阅事件实现组件间消息传递的工具. 它存在的目的,就是为了优化组件之间传递消息的过程.传统组件之间传递消息的方法有使用广播,回调等,而这些方法使用都比较复杂. 工作原理: 依赖: dependencies { compile 'org.greenrobot:eventbus:3.0.0' } 注:EventBus是事件-订阅模型,实际上事件就是消息,订阅就是接收,本文不会很严格区分,方便理解为主! 1. 从简单的入手:充当Handler 既然能发送消息,那么自然在…
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习本篇知识之前建议先回顾一下前两篇知识:Android消息传递之Handler消息机制(一),Android消息传递之组件间传递消息(二). 消息传递相关文章地址: Android消息传递之Handler消息机制 Android消息传递之组件间传递消息 Android消息传递之EventBus 3.0…
Event在整个系统中是单例的. EventBus.getDefault().register(this); 注册 EventBus.getDefault().unregister(this); 注销 处理: public void onEventMainThread(Integer type){ if(type==LOGOUT){ mainFragment.setCurrentItem(1); } } 发送: EventBus.getDefault().post(MainActivity.LO…
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:[张鸿洋的博客] 1.概述 最近大家面试说经常被问到EventBus,github上果断down了一份,地址:https://github.com/greenrobot/EventBus,的确是个不错的框架,主要用于事件的发布和订阅. EventBus定义:是一个发布 / 订阅的事件总线. 这么说应该包含4个成分:发布者,订阅者,事件,总线. 那么这四者…
前一篇简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是: 1.onEvent2.onEventMainThread3.onEventBackgroundThread4.onEventAsync 这四种订阅函数都是使用onEvent开头的,它们的功能稍有不同,在介绍不同之前先介绍两个概念:告知观察者事件发生时通过EventBus.post函数实现,这个过程叫做事件的发布,观察者被告知事件发生叫做事件的接收,是通过下…
一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.1.下载EventBus的类库源码:https://github.com/greenrobot/EventBus 2.基本使用 (1)自定义一个类,可以是空类,比如: public class AnyEventType { public …