Android 解耦方法 ~~~ 事件总线
来源:互联网 发布:linux系统运维面试题 编辑:程序博客网 时间:2024/05/16 09:58
一.它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码更加简洁,耦合性更低,提升了我们的代码质量。
二.设计模式:观察者模式。
三.使用场景:你是否在开发的过程中遇到过从Activity-A跳转到Activity-B,然后需要在Activity-B处理完某些工作之后回调Activity-A中的某个函数,但Activity又不能手动创建对象来设置一个Listener的情况?或者遇到在某个Service中更新Activity或Fragment中的界面等组件之间的交互问题…… , 那么这时就是使用事件总线的好时机。(看具体情况)
四.具体使用方式:
1>. 导入jar包(androideventbus-1.0.5.jar)
2>.注册对象
EventBus.getDefault().register(this);3>.使用@Subscriber 订阅函数
@Subscriber private void methodNoTag(String s) { Log.e("-----", "methodNoTag : " + s + " 线 程 -----> " + Thread.currentThread().getName()); }4>. 发布函数(在另一个对象中使用的)
EventBus.getDefault().post("我是时间总线");
打印日志:
E/-----: methodNoTag : 我是时间总线 线 程 -----> main
以上是订阅函数没有Tag的形式,有Tag的形式
@Subscriber(tag = "my_tag") private void methodHasTag(String s) { Log.e("-----", "methodHasTag : " + s + " 线 程 -----> " + Thread.currentThread().getName()); }在发布时要想调用带有tag的函数,则post时,必须要带有对应的tag
EventBus.getDefault().post("我是时间总线", "my_tag");注意事项:
1.注册函数只能有一个参数,否则不会调用(解决方法,定义一个实体类,将想要的参数,传递)
2.在没有tag时,注册函数参数类型 及其类型的父类,会被调用
3.再有tag时,无论参数类型什么,只要tag一致,那么都会被调用。
4.想调用某对象里的订阅函数,那么这个对象一定要注册。
5.在这个对象销毁时,一定要要取消对象的注册。如在Activity中,我们可以在onDestroy()中
@Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); }最后附上 jar 下载地址
1 0
- Android 解耦方法 ~~~ 事件总线
- android事件总线
- Android Rxbus事件总线
- Android事件总线
- [Android] EventBus事件总线
- Android 事件总线EventBus
- Android 事件总线 Otto
- Android EventBus事件总线
- AndroidEventBus,android事件总线框架
- Android事件总线EventBus详解
- android 事件总线 -- Otto(一)
- android事件总线 otto使用
- android事件总线EventBus解析
- Android 事件总线OTTO入门
- Android EventBus事件总线剖析
- 事件总线OTTO(助Android深层次解耦——跟回调说拜拜)
- 事件总线EventBus Android开源库的使用
- android高内聚低耦合任务事件总线框架
- 启动hadoop集群DataNode不显示,DataNode显示NodeManager不显示
- 215. Kth Largest Element in an Array 难度:medium 类别:分治
- Shiro 学习笔记(3)—— 自定义 Realm
- Sunny-Ngrok
- Shiro 学习笔记(4)—— 基于字符串的角色和权限
- Android 解耦方法 ~~~ 事件总线
- Android -- 固定在ScrollView顶部的View,类似于新浪微博的评论列表的顶部
- 卡特兰数(出栈序列以及已知先序遍历求树的形状的个数)
- 2016Android某公司面试题
- Shiro 学习笔记(5)—— 自定义权限解析器和角色解析器
- 排序,数据结构-python
- 位运算加速技巧
- 获取Class字节码对象的三种方式
- 排序算法 -- 快速排序