前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android事件总线(三)otto用法全解析

Android事件总线(三)otto用法全解析

作者头像
用户1269200
发布2018-02-01 14:17:10
1.1K0
发布2018-02-01 14:17:10
举报
文章被收录于专栏:刘望舒刘望舒
相关文章

Android事件总线(一)EventBus3.0用法全解析

Android事件总线(二)EventBus3.0源码解析

前言

otto 是 Square公司发布的一个发布-订阅模式框架,它基于Google Guava 项目中的event bus模块开发,针对Android平台做了优化和加强。虽然Square已经停止了对otto的更新并推荐使用RxJava和RxAndroid来替代它,但是otto的设计理念和源码仍旧值得学习,这一篇先来学习下otto的使用方法。

添加依赖库

首先配置gradle,如下所示。

定义消息类

与EventBus一样,我们接着定义消息类,它是一个bean文件,如下所示。

单例封装Bus

otto的Bus类相当与EventBus中的EventBus类,它封装了otto的主要功能,但它不是个单例,每次都要用new创建出来,这样显然不是很方便,因此我们用单例模式将它封装起来,如下所示。

注册和取消注册订阅事件

otto同样需要注册和取消注册订阅事件,通过OttoBus得到Bus对象,调用Bus的register和unregister方法来注册和取消注册,同时我们定义一个button,点击这个button跳转到SecondActivity,SecondActivity用来发送事件。代码如下所示。

事件订阅者处理事件

和EventBus一样用@Subscribe来订阅事件,在MainActivity中添加如下代码。

同样的用textView来显示接收到的消息。

使用post发送事件 创建SecondActivity,并设置一个button,点击发送事件,并finish掉自身,如下所示。

这样我们运行程序点击MainActivity的”跳转到SecondActivity”按钮直接跳转到SecondActivity,再点击”发送事件”按钮,SecondActivity被finish掉回到MainActivity ,MainActivity 中的textView的文字变为了”刘望舒的博客更新了”。

使用@Produce来发布事件

Produce注解用来生产发布事件,需要注意的是它生产事件前它需要注册,并且在生产完事件后需要取消注册。如果使用这种方法则在跳转到发布者所在的类中则会立即产生事件并触发订阅者,修改SecondActivity,代码如下所示。

在MainActivity跳转到SecondActivity时,MainActivity会马上收到事件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘望舒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关文章
  • 前言
  • 添加依赖库
  • 定义消息类
  • 单例封装Bus
  • 注册和取消注册订阅事件
  • 事件订阅者处理事件
  • 使用@Produce来发布事件
相关产品与服务
事件总线
腾讯云事件总线(EventBridge)是一款安全,稳定,高效的云上事件连接器,作为流数据和事件的自动收集、处理、分发管道,通过可视化的配置,实现事件源(例如:Kafka,审计,数据库等)和目标对象(例如:CLS,SCF等)的快速连接,当前 EventBridge 已接入 100+ 云上服务,助力分布式事件驱动架构的快速构建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档