(原创)简单介绍Android的EventBus(中)

本文介绍了EventBus中粘性事件的概念及其实现方法。粘性事件允许后注册的订阅者接收先前发布的消息,这对于跨Activity传递数据非常有用。文章详细讲解了发布和订阅粘性事件的具体步骤,并提供了清理粘性事件的方法。

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

上一篇博客我为大家简单介绍了一下EventBus的基本用法,今天是有关EventBus的第二篇——利用EventBus发布粘性事件

首先,简单介绍一下什么是粘性事件。一句话说,就是先发布事件,后注册订阅者,订阅函数仍然可以接收到事件消息,这种事件,称为粘性事件。
打个比方,我在一个Activity里发出消息,然后进入到另外一个Activity里面,一般来说,都是需要先注册的Activity才能接受到刚才发送来的消息。
但是如果是订阅了粘性事件的Activity就可以实现获得先注册的事件里的消息。这一点在开发中是比较常用的一点
那么,接下来就要开始正文了,如何利用EventBus发布和订阅粘性事件呢?

还是分步骤来讲

首先,自然还是要导入这个库了

compile 'org.greenrobot:eventbus:3.0.0'

第一步

//注册EventBus,通常在onStrat方法中执行
EventBus.getDefault().register(this);

第二步

//注销EventBus,通常在onStop方法中注销
EventBus.getDefault().unregister(this);

以上两步是不变的

第三步

发布粘性事件:
EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));

第四步

订阅粘性事件:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
    public void onEvent(MessageEvent event) {
        //接受到粘性消息,执行处理
    }

这样一来,我们的Activity或者Fragment就可以接受到发送来的粘性事件了

当然,我们还可以对粘性事件进行消除

消除粘性事件有以下两种方法

//第一种方式
//得到发布的粘性消息对象
MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class);
//如果不为空,调用方法进行移除
if(stickyEvent != null) {
    EventBus.getDefault().removeStickyEvent(stickyEvent);
}

//第二种方式
//直接移除粘性消息对象
MessageEvent stickyEvent = EventBus.getDefault().removeStickyEvent(MessageEvent.class);

好了,第二篇就先到这里了,再见!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值