Android:使用EventBus
来源:互联网 发布:汇丰银行 软件 招聘 编辑:程序博客网 时间:2024/06/03 18:05
一、配置环境:
1.在使用到的app的build.gradle的dependencies标签中加入:dependencies {
compile 'org.greenrobot:eventbus:3.0.0'
}
二、使用:
1.建一个实体类作为传递用:public class User{
...
}
2.在需要接收的Activity或Fragment或其他地方注册事件:
EventBus.getDefault().register(this);
3.传递实体类给接收类,内部根据实体类的类型进行区分:
EventBus.getDefault().post(new User()); //这种先register,再post,否则收不到
或
EventBus.getDefault().postSticky(new User()); //这种方式可以先post,后register,也能收到
4.定义一个方法接收消息(可以任意方法名,public访问权限,加@Subscribe注解):
@Subscribe(
sticky = true, //加上这句,可以先post,后register,也能收到
threadMode = ThreadMode.MAIN,
priority = 1 //改变线程优先级
)
或
@Subscribe(threadMode = ThreadMode.MAIN) //可以加上“sticky = true”,以“,”分隔
public void onInfo(User user) {
...
//不再接收后面的消息加上这句:EventBus.getDefault().cancelEventDelivery(user);
}
四种threadMode区别:
@Subscribe(threadMode = ThreadMode.POSTING):事件发送与接收在同一线程。
@Subscribe(threadMode = ThreadMode.MAIN):事件接收在UI线程
@Subscribe(threadMode = ThreadMode.BACKGROUND):事件在UI线程发送,则接收会在新的子线程执行,事件在子线程执行(按顺序分发所有事件),则接收也在当前子线程执行
@Subscribe(threadMode = ThreadMode.ASYNC):无论在哪个线程发送,接收都会在新建的子线程中执行
5.退出当前界面时取消注册,比如onDestroy:
EventBus.getDefault().unregister(this);
0 0
- Android - EventBus使用 备忘
- android EventBus 使用
- Android EventBus 使用详解
- Android EventBus使用详解
- Android EventBus的使用
- Android使用EventBus
- android EventBus的使用
- Android-eventBus的使用
- Android EventBus的使用
- Android EventBus 基本使用
- Android EventBus的使用
- Android EventBus使用详解
- Android EventBus 3.0使用
- android EventBus的使用
- android EventBus使用 总结
- android-eventbus-使用详解
- Android EventBus使用总结
- Android -- EventBus使用
- C# 在PDF中创建和填充域
- boost条件变量使用
- LeetCode 27. Remove Element
- MySQL数据约束
- NProgress.js全站进度条插件 中文API
- Android:使用EventBus
- iOS开发CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX的使用
- Vuejs学习系列(二十三)-- 条件语句(一)
- PHP:用date函数获取当前时间有误的疑问
- 蓝桥杯2017模拟赛-猜算式
- Modbus软件开发实战指南 之 modbus 地址
- MySQL多表关联查询+子查询_R
- R语言编程中的常见错误
- wampserver2.5环境下开启mysql慢查询