EventBus 最简易的使用方式
呃,要跟上时代的步伐,所以来学习一下EventBus(话说好像现在学也已经算是跟不上了。。嘛。。不管了,一步一步往前追,应该还来得及吧)。
转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50625105
看了网上一些的关于eventBus的文章,上来就叽里呱啦一大堆总结啊,概述啊。。上个原理图啊什么的。。 这样写虽然好,但是总会给一些初学者打一些退堂鼓。看到那么复杂就不想看下去了。。 所以在自己学习的过程中,想写一些直观的,精简的,适合初学者的博客。
现在开始吧
关于EventBus是什么
额。。因为笔者也是刚刚接触,所以暂时我们认为他是用来传递消息的东东(类似于handler啊 intent啊等等)。这样也比较好理解。 暂时撇开观察者模式不说,直接来看他的用法。
首先将EventBus整合到我们自己的项目中
- EventBus的项目地址为https://github.com/greenrobot/EventBus.git
1.在gradle里面,加入如下代码,这样即可在项目中使用EventBus
dependencies {compile 'de.greenrobot:eventbus:2.4.0'
}
如何使用
- 在MainActivity的onCreate()周期注册EventBus。
EventBus.getDefault().register(this);
- 在onDestroy()注销EventBus。
@Overrideprotected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}
这样便完成了一个EventBus的注册。现在,给Activity安上一个按钮,用这个按钮来发送消息,弹出一个Toast。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mButton = (Button) findViewById(R.id.btn);mButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {EventBus.getDefault().post("hello eventBus");}});EventBus.getDefault().register(this);}
此时,点击button,将会通过EventBus发送一条消息。然后来写一个onEventMainThread函数,去处理这个消息的接收。这个函数代表如果接收到消息,则运行在UI线程。里面去弹出一条Toast,为刚才发送的消息。
public void onEventMainThread(String str) {Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();}
此时,点击按钮,效果如下:
具体的流程是: 按钮触发监听事件—->EventBus发送消息—->EventBus接收消息—->处理接收到的消息
这样应该大家可以很直观的了解了EventBus的作用,这也算是第一课时的笔记吧~
下一篇: EventBus的常用函数
大家如果喜欢我的博客,记得关注我哦。
EventBus 最简易的使用方式相关推荐
- 水下自动循迹机器人_机器人简易循迹方式
龙源期刊网 http://www.qikan.com.cn 机器人简易循迹方式 作者: 来源:<发明与创新 · 中学生> 2017 年第 10 期 循迹机器人是一种能按事先预定的路线自主行 ...
- Android自定义事件总线,手写Android事件总线框架Eventbus(简易版)
开篇废话 近期利用业余时间,跟着大神把Eventbus的框架学习了一下,在这里,记录一下这次学习的心得. EventBus是针一款对Android的发布/订阅事件总线.它可以让我们很轻松的实现在And ...
- 微信小程序 map 自定义地图数据,实现方式+思路+代码(最简易的实现方式)
先上效果图,总的来说就是在地图上加上自己需要的数据 注意事项: requestSimple是我封装的提交函数,我的其他帖子有. 重点掌握.(重点) 1.官方map组件,提供了自定义标记(markers ...
- 微信小程序 列表的分页实现(最新的最简易的实现方式+思路,附代码)
老规矩先上效果图 这里的话 xwml页面展示就不贴代码了,意义不大.直接上js js页面 注意事项 主要使用的是 onPullDownRefresh 函数与 onReachBottom函数,一个是下拉 ...
- 简易的解决方式linker command failed with exit code 1 (use -v to see invocation)
今天在打包上线的时候遇到了一个大坑,足足让我解决了三个小时来找这个问题 linker command failed with exit code 1 (use -v to see invocation ...
- vue通信方法EventBus的实现
vue通信方式有很多,项目中用的比较多的的有pros.vuex.$emit/$on这3种,还有provide/inject(适合高阶组件).$attrs和$listeners(适合高阶组件)以及$ ...
- EventBus VS Spring Event
EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Gua ...
- 详解EventBus实现原理
搞Java开发,阅读源码是家常便饭.唯有如此,才能不断吸收先进的设计思想,提高个人技术水平.下面以EventBus核心实现为引子来分析google大神是怎么优化观察者模式的. 前文已有EventBus ...
- 深度学习入门系列,用白话文的方式让你看得懂学的快(第八章)
8.1 BP神经网络极简史 在神经网络(甚至深度学习)参数训练中,BP(Back Propagation)算法非常重要,它都占据举足轻重的地位.在提及BP算法时,我们常将它与杰弗里•辛顿(Geoffr ...
最新文章
- 软件架构设计-五视图方法论
- 可以改善mysql性能的InnoDB配置参数
- 音视频技术开发周刊 61期
- 【C语言天天练(二四)】内存分配
- java jama_java矩阵包jama的简单操作
- C#正则匹配、分组和替换
- 视频联网云平台EasyCVR集成海康EHome协议系列——Ehome协议调用流程介绍
- 信息检索与利用(第三版)第二章信息资源与信息源
- 基于 Python 的全国空气质量监测与可视化分析平台
- B站笔试真题之[编程题]扭蛋机
- 多线程实现 qq 群聊的服务端和客户端
- 解决MySQL5.7在MAC下登录ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- UML相关工具一览(2018年5月更新)
- 相对定位 绝对定位 固定定位 粘性定位 居中的三种方法 calc函数标签的使用方法
- 教育行业下半场强势到来!专访FCG教育链Edward Cai:从互联网教学到“链教学”,让天下没有不公平的教育...
- 英语46级报名考试系统
- xmlHttp.send(null)与xmlHttp.send…
- jq简单实现点击按钮跳转页面到指定tab内容
- JSONAjax(语法格式+解析json)
- 浅谈缓存系统的三个问题