前言 EventBus是一款针对Android优化的发布/订阅事件总线.简化了应用程序内各组件间.组件与后台线程间的通信.优点是开销小,代码更优雅,以及将发送者和接收者解耦.如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用广播来处理,但是使用广播稍显麻烦并且效率也不高,如果传递的数据是实体类需要序列化,那么很显然成本会有点高.今天我们就来学习下EventBus3.0的使用方法. 1.EventBus概述 EventBus…
前言 上一篇文章中讲到了otto的用法,这一篇我们来讲一下otto的源码.可能有人觉得otto过时了,但是通过源码我们学习的是高手设计otto时的设计理念,这种设计理念是不过时的. otto各个类的作用 首先先来看一下otto的源码的各个类的作用,如下图所示. 如图所示,otto的源码并不多,主要的类的功能如下: Produce.Subscribe:发布者和订阅者注解类. Bus:事件总线类,用来注册和取消注册,维护发布-订阅模型,并处理事件调度分发. HandlerFinder.Annotat…
Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.反正能帮助我们快速开发,这个确实是个好东西,其实鸿洋大神已经对源码作了一个较全面的剖析了 Android EventBus源码解析 带你深入理解Ev…
1.构造函数 当我们要调用EventBus的功能时,比如注册或者发送事件,总会调用EventBus.getDefault()来获取EventBus实例: public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstance == null) { defaultInstance = new EventBus(); } } } r…
发送和接收消息的方式类似其他的发送和接收消息的事件总线一样,不同的点或者应该注意的地方: 1,比如在子线程构造方法里面进行实现总线的注册操作: 2,要想子线程中接收消息的功能执行,必须启动线程. 3,添加tag和不添加tag类似其他. package com.example.mysimpleeventbus; import java.util.ArrayList; import java.util.List; import org.simple.eventbus.EventBus; import…
这个和普通的事件总线的发送接收一样. package com.example.mysimpleeventbus; import java.util.ArrayList; import java.util.List; import org.simple.eventbus.EventBus; import org.simple.eventbus.Subscriber; import org.simple.eventbus.ThreadMode; import android.content.Inte…
最近再看eventbus相关代码,首先从使用开始,后期再从源码角度分析eventbus.使用Demo后期公布到github上去. 使用的框架地址:https://github.com/bboyfeiyu/AndroidEventBus Sticky 事件 使用例子: 1,首先每个Activity或者fragement都要进行eventBus的注册和反注册. 发送sticky事件的activity: package com.example.mysimpleeventbus; import org.…
事件总线分发库EventBus和Otto的简介及对比 什么是事件总线管理: a.将事件放到队列里,用于管理和分发b.保证应用的各个部分之间高效的通信及数据.事件分发c.模块间解耦 Event Bus是一个发布 / 订阅的事件总线.Event Bus模式 — 也被称为Message Bus或者发布者/订阅者(publisher/subscriber)模式 — 可以让两个组件相互通信,但是他们之间并不相互知晓. 基于事件总线管理/订阅/分发模式的.事件响应有更多的线程选择,EventBus可以向不同…
Android中Activity.Service.Fragment之间的相互通信比较麻烦,主要有以下一些方法: (1)使用广播,发送者发出广播,接收者接收广播后进行处理: (2)使用Handler和Message,如下载线程完成下载任务后,给UI发送Message,UI收到Message后更新界面. 但是这些方法都比较繁琐,一种比较简单有效的方法就是使用事件总线.事件总线的基本原理是发送者把消息发送到事件总线,然后事件总线在接收者中查找哪些方法注册了这个事件,如果某个方法注册了这个事件,就触发该…
1,不同Activity直接发送Ansy的事件,以及其他任何事件,必须通过 postSticky方式来进行事件的传递,而不能通过post的形式来进行传递:EventBus.getDefault().postSticky(newUser("soyoungboy","西安财经学院"),"soyoungboy");. 2,接受到事件后,很有必要移除事件里面的内容,否则事件内容会多次叠加:EventBus.getDefault().removeStick…