今天使用EventBus 遇到一个小bug ,这里记录下其使用

先啰嗦一下,这边博客是说怎样使用的,没有涉及到什么原理,在看之前,你或许百度了很多博客

都是MainActivity 接受消息,SecondActivity 发送消息。 感觉怪怪的,怎么大家都一样,。。。。

后来自己测试法知道原因,这里只是自己的猜测

我们一般都是先启动MainActivity ,跳转到SecondActivity ,,此时,栈中存在2个activity ,那么 SecondActivity

返回MainActivity ,MainActivity存在栈中,不会遇到post发送消息了,MainActivity还没创建的情况

这样就避免了消息接受不到的情况了,好像大家都是测试,没有说这一点。

解释下粘性发送,就是消息接受不会,会一直发送。

使用 方法

(如果不知道使用就先把它当作intent 传值,这个熟悉把,下面演示下效果)

1 先导入EventBus库

implementation 'org.greenrobot:eventbus:3.1.1'

我打算MainActivity发送消息,SecondActivity 接受消息,但是为了保证能收到消息,使用粘性发送

发送消息

public class Morning extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.morining_activity_layout);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {EventBus.getDefault().postSticky(new MessageBean("小牧","18"));Intent intent = new Intent(Morning.this, NoonActivity.class);startActivity(intent);}});}
}

MessageBean代码如下

public class MessageBean {private String name;private String age;public MessageBean(String name, String age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}
}

然后就可以在其界面接受值了

public class EveningActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.evening_activity_layout);//注册事件EventBus.getDefault().register(this);}//事件订阅者处理事件@Subscribe(threadMode = ThreadMode.POSTING, sticky = true)public void onEvent(MessageBean messageBean){if (null !=messageBean){Log.e("==========xiaomu",messageBean.getName());Log.e("==========xiaomu",messageBean.getAge()+"");}else{Log.e("==========xiaomu","messageBean为空");}}@Overrideprotected void onDestroy() {super.onDestroy();//取消注册事件EventBus.getDefault().unregister(this);}}

EventBus四种ThreadMode:

POSTING(默认):如果使用事件处理函数指定了线程模型为POSTING,那么该事件在哪个线程发布出来的,事件处理函数就会在这个线程中运行,也就是说发布事件和接收事件在同一个线程。在线程模型为POSTING的事件处理函数中尽量避免执行耗时操作,因为它会阻塞事件的传递,甚至有可能会引起ANR。
MAIN: 
事件的处理会在UI线程中执行。事件处理时间不能太长,长了会ANR的。
BACKGROUND:如果事件是在UI线程中发布出来的,那么该事件处理函数就会在新的线程中运行,如果事件本来就是子线程中发布出来的,那么该事件处理函数直接在发布事件的线程中执行。在此事件处理函数中禁止进行UI更新操作。
ASYNC:无论事件在哪个线程发布,该事件处理函数都会在新建的子线程中执行,同样,此事件处理函数中禁止进行UI更新操作。

我个人把EventBus理解为Intent 传值的升级版本,即使不知道其原理使用也是很简单的。

EventBus的使用(一看就懂)相关推荐

  1. 设计模式也可以这么简单,一看就懂

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 作者:javadoop 来源:https://javadoop.com/post/design-pattern 序 一 ...

  2. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  3. 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...

    本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...

  4. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  5. python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...

    原标题:程序员才能看得懂的段子,内含表情包,吃饭的时候别点! 很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农.其实这种看法是非常片面的.真正优秀的程序员,不仅精通程序的编写,还是某些领域的专 ...

  6. 【机器学习】小孩都看得懂的 GAN

    全文共 6327 字,55 幅图, 预计阅读时间 32 分钟. 本文是「小孩都看得懂」系列的第十八篇,本系列的特点是内容不长,碎片时间完全可以看完,但我背后付出的心血却不少.喜欢就好! 小孩都看得懂的 ...

  7. 史密斯圆图串并联口诀_看得懂的史密斯圆图(个人总结)

    看得懂的史密斯圆图(个人总结) 2018-09-11 史密斯圆图(Smith chart)是一款用于电机与电子工程学的圆图,主要用于传输线的阻抗匹配上.一条传输线(transmission line) ...

  8. 一看就懂系列之 如何实现与控制php常驻进程

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 前言 关于如何实现与控制php常驻进程,不管是google还是baidu上进行搜索,都没有感觉看起来赏心悦目的解答,于是决定自己 ...

  9. ref与out一看就懂

    讲解一下ref与out的小知识,形象总结的例子让您运用起来的心应手,新手一看就懂,共同进步. class Program { static void Main(string[] args) { //两 ...

最新文章

  1. mysql数据库设计的原则_MySQL数据库设计原则
  2. 防火墙先锋 Check Point 进军汽车数据防护领域
  3. PLSQL 申明和游标
  4. 60-400-040-使用-binlog-MySQL BinLog入门
  5. 系统学习深度学习(四十)--基于模拟的搜索与蒙特卡罗树搜索(MCTS)
  6. C# 重绘tabControl,添加关闭按钮(页签)
  7. windows 子系统认识(1)
  8. 三轴机械臂逆运动学解算(附代码)
  9. 基于tushare和python的证券市场价格分析
  10. 运筹学实验_指派问题
  11. MATLAB曲线平滑的办法
  12. 【刷题】清橙 A1339 JZPLCM(顾昱洲)
  13. 五星大饭店续集剧情大放送(最新更新)
  14. vue3笔记(乱七芭蕉更新中)
  15. 在centos中安装qq音乐
  16. 6大论坛,30+技术干货议题,2022首届阿里巴巴开源开放周来了!
  17. 浅谈API开发安全之sign有效时间(三)
  18. VLC全部参数,libvlc_new函数参数,VLC SDK开发
  19. Javaweb基础配置模板(mybatis+javaweb)
  20. Codeforces 715B

热门文章

  1. Python 生成器总结
  2. 【Design pattern】简单工厂过渡策略模式
  3. pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())
  4. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
  5. BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习...20201107
  6. 数学上各种空间概念的关系图
  7. python开启GPU加速
  8. python yield 和 return 对比分析
  9. MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)
  10. 激光雷达激烈竞争市场