安卓Android事件总线EventBus简单使用
EventBus是的主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息,优点是开销小,代码更优雅。以及将发送者和接收者解耦。
三要素:
1)Event:事件(乘客)
2)Subscriber:订阅者(目的地)
3)Publisher:发布者(汽车站)
另外还要注意的是线程模型(ThreadMode),待会儿会讲。
使用流程:
1.添加依赖:
compile 'org.greenrobot:eventbus:3.0.0'
2.新建一个类来做为事件
public class MyEventBus {private String msg;public MyEventBus(String msg) {this.msg = msg;}public String fristEvent(){return msg;}
}
3.监听事件:EventBus默认是一个单例,可通过getDefault()来获取。 首先把作为订阅事件模块通过EventBus注册监听:
EventBus.getDefault().register(this);
并且要有一个接收事件的方法,添加Subscrible进行注解:
@Subscribe(threadMode = ThreadMode.MAIN)public void onEventMainThread(MyEventBus eventBus){Toast.makeText(this,eventBus.fristEvent(),Toast.LENGTH_SHORT).show();textView.setText(eventBus.fristEvent());}
在模块销毁或者不使用时要进行取消订阅,反注册一波:
@Overrideprotected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}
4.发送事件,不需要进行注册,直接使用post发送就行,在需要发送事件的地方,调用post方法即可:
EventBus.getDefault().post(new MyEventBus("B向A发了一条消息过来"));
然后我们讲一下上面提到的线程模型ThreadMode他有四种模式:
1)MAIN(最常用):无论在那个线程发布,事件都会在UI线程执行,该方法可以用来更新UI,但是要避免耗时操作。
2)POSTING:发布线程与处理线程一致,若为UI线程才可以更新UI,所以处理的时候最好判断一下,不推荐在本方法更新UI。
3)ASYNC:无论事件在那个线程发布,事件都会在新线程中执行,禁止更新UI。
4)BACKGROUND:如果发布线程为UI线程,则处理线程会在新线程中,若在子线程中发布,则处理与发布线程一致,禁止更新UI。
好了,关于eventbus简介基本上差不多了,大家可以试试,如有不对的地方请指出,谢谢!!!
安卓Android事件总线EventBus简单使用相关推荐
- Android事件总线——EventBus的使用
前言 首先我们来说下事件总线,它的作用:为了更简化并更高质量的在Activity,Fragment,Thread和Service等之间的通信,解决组件之间高耦合的同时仍能进行高效的通信. 什么是Eve ...
- Android 事件总线 EventBus入门及使用
何为事件总线? 是对发布-订阅模式的一种实现. 它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的.学习它之前最好先了解下观察者模式 说白了就是不同组件间 ...
- Android事件总线设计(一)- EventBus初步学习
Android事件总线设计(一) 我们通常在进行安卓设计的时候,不同的Activity,Fragment,Service等之间通讯一直是个不小的问题,用Intent以及Handler都觉得有一点麻烦, ...
- vue中央事件总线eventBus的简单理解和使用
公共事件总线eventBus的实质就是创建一个vue实例,通过一个空的vue实例作为桥梁实现vue组件间的通信.它是实现非父子组件通信的一种解决方案. 用法如下: 第一步:项目中创建一个js文件(我通 ...
- Android事件总线(一)EventBus3.0用法全解析
相关文章 Android事件总线(一)EventBus3.0用法全解析 Android事件总线(二)EventBus3.0源码解析 Android事件总线(三)otto用法全解析 Android事件总 ...
- vue 事件总线EventBus的概念、使用以及注意点
vue组件中的数据传递最最常见的就是父子组件之间的传递.父传子通过props向下传递数据给子组件:子传父通过$emit发送事件,并携带数据给父组件.而有时两个组件之间毫无关系,或者他们之间的结构复杂, ...
- Android退出程序(三)——Android事件总线
概述 当我们跟随时间的脚步向前挪动的时候,总能发现原来以前的自己做了一些愚蠢的事情.但,不见得以前就是不好的事情.我在以前的博客中写过两种关于Android中如何退出应用程序的方法.近日,我又发现了一 ...
- Google guava 事件总线 EventBus 进程内消息队列
Google guava 事件总线 EventBus 创建事件总线流程 码代码 引入依赖 一个简单的事件处理 监听者 创建事件生产者总线.注册事件监听者.发送事件 运行结果 扩展 多个事件监听者加De ...
- Android之事件总线EventBus详解
顾名思义,AndroidEventBus是一个Android平台的事件总线框架,它简化了Activity.Fragment.Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码 ...
最新文章
- linux笔记软件,Linux Ubuntu学习笔记_软件管理
- 计算机网络应用PS,计算机一级Photoshop应用试题及答案
- 分布式系统工程实现:GFSamp;Bigtable设计的优势,互联网营销
- 开通了一个gmail邮箱
- MySQL(五)汇总和分组数据
- (保守群组测试 非保守群组测试 二次重复测试 自适应二次重复测试)四种群体测试的C++代码
- [转][探讨]为什么说JavaScript是性价比最高的技术?
- 用dos复制文件_一文带你熟悉DOS命令操作,CMD从此不再是路人!
- python测试驱动开发 中文版_GitHub - starryrbs/python_tdd: 使用Python测试驱动开发完成Django项目...
- Google发布中文名称“谷歌”
- 【菜鸡学算法】用最笨最直观的方法讨论递归取中值时是不是陷入死循环
- android唯一机器码生成方案_分布式系统唯一ID生成方案汇总
- 超详细SPSS主成分分析计算指标权重(二:权重计算及极差法标准化)
- Uniapp 图片编辑插件 Ba-ImageEditor
- android自定义相机取景框模仿微信抓取录像实现活体认证
- access函数使用方法
- 我们不改需求了,给你们立字据!
- oracle 归档日志 重做日志,Oracle的重做日志和归档日志
- java有阴历年算法吗_中国农历算法java实现
- 【读后感】《清单革命》读书笔记
热门文章
- 单片机计算机实训总结,单片机实习心得体会范文
- Web前端学习路线图(脑图)
- openssl passwd 手动生成密码——passwd提权
- Fatal License Error8Unable to checkout a viewer license necessary for use of the Questa intel Starte
- mac 下开发java_MAC 系统java开发环境搭建教程
- d3.js 旋转图形_“学习思路给你,看了就会”:小学数学知识点《组合图形的面积》...
- 流量主制作生成装逼工具微信小程序源码下载支持小程序和公众号制作生成
- 前端开发如日中天,怎样成为一名优秀的WEB前端程序员?
- mysql join
- 小编任性,今天就送机械键盘给你!