RxBus-实现EventBus之Sticky

本文介绍了如何在RxBus中实现类似EventBus的Sticky功能,通过注解方式使用,详细讲解了记录、分发和销毁Sticky事件的步骤,包括使用Map记录事件,反射获取注解数据,以及线程管理等关键点。
摘要由CSDN通过智能技术生成

RxBus-实现EventBus之Sticky

背景

前期由于工作中需要将EventBus替换成RxBus,所以按照EventBus的用法封装了一套自己的RxBus,基本满足了使用,项目发出后有不少兄弟告诉我没有EventBusSticky功能,所以得闲完善这个功能,同样是按照EventBus3.0注解的方式去实现和调用

原RxBus基本功能实现原理:EventBus完全一样的RxBus


效果

这里写图片描述

sticky是什么

在Android开发中,Sticky事件只指事件消费者在事件发布之后才注册的也能接收到该事件的特殊类型。Android中就有这样的实例,也就是Sticky Broadcast,即粘性广播。正常情况下如果发送者发送了某个广播,而接收者在这个广播发送后才注册自己的Receiver,这时接收者便无法接收到刚才的广播,为此Android引入了StickyBroadcast,在广播发送结束后会保存刚刚发送的广播(Intent),这样当接收者注册完Receiver后就可以接收到刚才已经发布的广播。这就使得我们可以预先处理一些事件,让有消费者时再把这些事件投递给消费者。

使用

完全按照EventBus3.0版本的注解的方式去使用

  • 发送消息
RxBus.getDefault().post(new EventStickText("我是sticky消息"));
  • 接收消息

    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void event(EventStickText eventStickText) {
        Observable.timer(1, TimeUnit.SECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> {
            textView.setText(eventStickText.getMsg());
        });
    }


    @Override
    protected void onStart() {
        super.onStart();
        RxBus.getDefault().register(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        RxBus.getDefault().unRegister(this);
    }

实现

本篇的实现原理是基于之前的RxBus封装的基础上的完善,所以需要大致了解RxBus之前基本功能的封装原理方能更加全面的理解一下的内容

原RxBus基本功能实现原理:EventBus完全一样的RxBus

1.添加sticky注解

不懂注解的同学可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值