EventBus 3.0使用基础
来源:互联网 发布:自动生成声音软件 编辑:程序博客网 时间:2024/05/20 07:37
EventBus 3.0使用基础
EventBus概述
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
1、下载EventBus
compile 'org.greenrobot:eventbus:3.0.0'
Maven
<dependency> <groupId>org.greenrobot</groupId> <artifactId>eventbus</artifactId> <version>3.0.0</version></dependency>
基本使用
1、首先每个事件写一个实体bean,EventBus就是根据这个实体bean来判断事件分发的
public class EventBusBean{ }
EventBus.getDefault().register(this);
3、实现处理方法
在3.0以前一直是通过以下4个方法名来实现消息处理
a、onEvent
b、onEventMainThread
c、onEventBackgroundThread
d、onEventAsync
每个方法名都有不同的含义
onEvent:如果使用onEvent作为订阅方法,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
onEventMainThread:如果使用onEventMainThread作为订阅方法,那么不论事件是在哪个线程中发布出来的,onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。
onEventBackground:如果使用onEventBackgrond作为订阅方法,那么如果事件是在UI线程中发布出来的,那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么onEventBackground函数直接在该子线程中执行。
onEventAsync:使用这个函数作为订阅方法,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync. 实现处理方法有4个方法可以实现,不用继承或实现任何接口,只需要在你注册的类中添加方法就行了,当然方法名是有限制的,参数就是你要传递的消息对象
但是3.0以后就不在用这种方式了,而是通过注解的方式
通过注解@Subscribe来确定实现的方法,当然还需要方法的形参,只是把以前的特定方法名改为不特定,而是通过注解,同时通过threadMode来设定线程,一共有4种方式,同以前一样
a、ThreadMode.POSTING 同onEvent
b、ThreadMode.MAIN 同onEventMainThread
c、ThreadMode.BACKGROUND 同onEventBackground
d、ThreadMode.ASYNC 同onEventAsync
如:@Subscribe(threadMode = ThreadMode.POSTING)
比如我们用onEventMainThread来注册,这样onEventMainThread方法体会在UI线程去执行
public void onEventMainThread(EventBusBean bean){ ...}4、发送消息EventBus.getDefault().post(new EventBusBean());
或者
EventBus.getDefault().postSticky(new EventBusBean());
5、取消注册
当一个类被销毁或者生命周期完成时,我们要及时取消注册,以免造成内存泄露
EventBus.getDefault().unregister(this);
- EventBus 3.0使用基础
- EventBus使用之基础
- EventBus使用之基础
- EventBus使用之基础
- EventBus使用基础
- EventBus 3.0 (一) 基础
- EventBus之基础使用详解
- EventBus 3.0 使用详解
- Eventbus 3.0 使用
- EventBus 3.0使用详解
- EventBus 3.0使用详情
- EventBus 3.0 使用
- EventBus 3.0 使用介绍
- EventBus 3.0 的使用
- EventBus 3.0的使用
- EventBus 3.0 简单使用
- EventBus 3.0使用详解
- 3.0EventBus使用
- 计算机网络总结
- 访问者模式
- Centos接触 (七)安装JDK和tomcat
- 有关opencv光流法的解释
- 解决 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- EventBus 3.0使用基础
- 并发编程学习
- acm之搜索题目1
- C#操作word:将rtf中的ole对象通过MathType转换成MathML
- TCP数据报首部
- 如何来看单片机外设A/D转换器ADC0804时序图
- 设计模式总结
- 分布式系统里session同步的那些事儿
- Java基础知识