一个简单的、结合注解使用的RxBus

网上有许多实现简单的RxBus,不过思来想去,还是自己写一个用得顺手。

最核心的内容依然是用RxJava中的Subject。只是通过注解修饰事件处理,简化了调用步骤。

项目地址:ViTess/RxBus

Android RxBus

使用注解(@Subscribe)标记事件接收方法,调用RxBus.post()发送值到接收方法。

支持无参、单参数形式。

支持基本类型和自定义类型传参。

使用

  • 注册和注销接收对象

    在程序的入口处加入RxBus.register(this)注册对象

    在程序的销毁处加入RxBus.unregister(this)销毁对象

    例如,在MainActivity中:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RxBus.register(this);
        }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        RxBus.unregister(this);
    }
  • 标记事件接收方法

    只需要在已经注册的类中的方法上加上@Subscribe,并在其中加入区分用的tag

    例如:

    @Subscribe("Test")
    public void test(int random) {
        Toast.makeText(this, "random:" + random, Toast.LENGTH_SHORT).show();
    }

    不设置tag,无参方法也可以:

    @Subscribe
    public void test() {
        Toast.makeText(this, "void", Toast.LENGTH_SHORT).show();
    }
  • 设置接收方法的运行线程

    在标记了@Subscribe的方法再加上相应的注解标记线程即可,如:

    @Subscribe
    @RxIO
    public void test() {
        //TODO
    }

    则该方法将运行在IO线程

    用于标记线程的注解如下:

    • RxMainThread
    • RxIO
    • RxComputation
    • RxNewThread
    • RxTrampoline
    • RxImmediate
  • 发送消息

    使用RxBus.post(Tag)RxBus.post(Tag,Value)即可。其中RxBus.post(Tag)用于发送到无参方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值