常用事件消息传递

一个实现了监听器接口的类,必须把它自身注册到它想要监听的类中去

使用广播,内部的实现都需要IPC(进程间通信),从传递效率上来讲,可能并不太适合上层的组件间通信

Activity间的消息传递便是通过startActivityForResult和onActivityResult,会产生较多的状态或者逻辑判断,而且Intent或者Bundle传值还得监测类型,容易发生错误

EventBus概述

EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。

EventBus流程

EventBus基本用法

注册:

EventBus.getDefault().register(this);

EventBus.getDefault().register(this,methodName,Event.class);

取消注册:

@Override

protected void onDestroy() {

super.onDestroy();

EventBus.getDefault().unregister(this);

}

订阅处理数据:

onEventMainThread,onEvent

onEventPostThread,onEventAsync

onEventBackgroundThread

发布:

EventBus.getDefault().post(new MessageInfo("消息类参数"));

下面写一个小例子:

public class MainActivity extends AppCompatActivity {

Button btn_first;

TextView tx_show;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

EventBus.getDefault().register(this);

btn_first = findViewById(R.id.btn_first);

tx_show = findViewById(R.id.tx_show);

btn_first.setOnClickListener(v -> startActivity(new Intent(MainActivity.this, SecondActivity.class)));

}

@Subscribe(threadMode = ThreadMode.MAIN)

public void onEventMainThread(MyEvent event) {

String msg = "返回数据:" + event.getMessage();

tx_show.setText(msg);

}

@Override

protected void onDestroy() {

super.onDestroy();

EventBus.getDefault().unregister(this);

}

}

public class SecondActivity extends AppCompatActivity {

Button btn_second;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

btn_second = findViewById(R.id.btn_second);

btn_second.setOnClickListener(v -> {

EventBus.getDefault().post(new MyEvent("second acticity is click"));

finish();

});

}

}

android eventbus view,Android-EventBus框架详细介绍与简单实现相关推荐

  1. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  2. android中intent放数据类型,Android Intent传递数据底层分析详细介绍

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  3. Android manifest文件中的标签详细介绍

    Android manifest文件中的标签详细介绍 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: ...

  4. 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一)

    上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 上篇文章中给大家简单介绍了一些业务,上门洗车APP --- Android客户端开发 前言及业务简介,本篇文章给大家介绍下 ...

  5. 由浅入深!Android性能优化常见问题,技术详细介绍

    前不久听我一个字节的朋友说了一个神转折的故事. 一名大专生,异常执着地向他们公司投简历,屡战屡败,屡败屡战,前前后后向字节跳动投了九次简历. 你猜后面怎么着?还真让他成功了,第九次居然拿到了offer ...

  6. Android TextView字体大小调节框架QFontChangeLib介绍

    QFontChangeLib地址:https://github.com/qqliu10u/FontChangeLib.git 内容阅读类客户端通常都有个功能--调整字体大小,这种功能说复杂也不复杂,但 ...

  7. android revre view,Android热修复之微信Tinker使用初探

    前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了.java 今天拿下来集成使用了一下,发现md上对集成使用的过程介绍的比较精简(后来发现wiki上面却是很详细 ...

  8. android remoteviews view,Android 理解RemoteViews

    导语 什么是远程view呢?它和远程service一样,RemoteViews可以在其他进程中显示.我们可以跨进程更新它的界面.在Android中,主要有两种场景:通知栏和桌面小部件. 本章先简单介绍 ...

  9. Android自定义View,Android炫酷的音乐频谱进度条,变化自如的音乐进度条

    前段时间,公司项目有个UI需求,要做一个这么的东西 : 一个仿音乐频率谱线进度条(这是什么鬼?),那好,就先将这个控件命名为:音乐频谱进度条:) 废话不多说,先来看一下效果图: 附上在GitHub上的 ...

  10. Java操作Word方法汇总,并详细介绍最简单的方法!!吊打POI以及那些POI的封装库

    因为boss提了一个根据信息自动生成Word的需求,所以我就研究了一下这一方面的库 经过我的研究,一般常用的有以下几种方法: 1.直接freemaker渲染,就是把要加入的数据用${}包起来,然后wo ...

最新文章

  1. 模拟video播放器
  2. Struts2输入校验
  3. Java 10新特性解密
  4. 造完家怎么拆东西_吸顶灯灯管怎么拆?吸顶灯拆灯管的注意事项有哪些?
  5. 再有人问你什么是ThreadLocal,就把这篇文章甩给他!
  6. js实现kmp算法_搜索算法 与 随机算法 (JS实现)
  7. 【二叉树迭代版中序遍历】LeetCode 94. Binary Tree Inorder Traversal
  8. USB转232和485的区别
  9. DWZ 富文本编辑器 IE下失去焦点
  10. 密码学小知识(2):密码学三大顶会,信息安全四大顶会,网络与信息安全CCF推荐会议和期刊
  11. java线程栅栏_java 线程栅栏
  12. 小猿日记 - 程序猿的日常日记(3)
  13. vs2013下git的使用
  14. ApacheCN 深度学习译文集 2020.9
  15. 苹果用无线网无法连接服务器怎么回事啊,苹果手机连接到无线网但是不能用怎么办...
  16. 定理在数学中的简写形式_初一数学:定义、定理、公式、方法
  17. github上下载的源码 如何使用 ?
  18. 云安全问题及其解决方案
  19. Aegisub设置字体透明度
  20. 240次方在线计算机,0.05的240次方是多少

热门文章

  1. SQL SERVER中游标也有Continue,break等跳出循环的语句
  2. 生活大爆炸soft kitty
  3. OpenGl 游戏编程笔记 第七章:纹理映射 (texture mapping) (一)
  4. 预处理_关于食材预处理
  5. 拓端tecdat|R软件SIR模型网络结构扩散过程模拟
  6. 拓端tecdat|R语言rcurl抓取问财财经搜索网页股票数据
  7. C Primer Plus 第七章 第七题
  8. python中连接函数_python-使用参数连接到函数
  9. spring cloud学习笔记02
  10. Java从入门到精通 第14章 关于类的专题研究