Android:使用EventBus

本文详细介绍了在Android中如何配置和使用EventBus库,包括环境配置步骤和关键的unregister操作,帮助开发者实现高效的事件传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置环境:
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);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值