Skip to content

Android 事件盒子,指向性传递event ,一款比EventBus 更好用的Android事件总线框架!

Notifications You must be signed in to change notification settings

bigdongdong/EventBox

Repository files navigation

EventBox

Android 事件盒子,指向性传递event ,一款比EventBus 更好用的Android事件总线框架!

项目配置

  allprojects {
      repositories {
          ...
          maven { url 'https://jitpack.io' }  //添加jitpack仓库
      }
  }
  
  dependencies {
	  implementation 'com.github.bigdongdong:EventBox:${last_version}' //添加依赖
  }

使用说明

1.在Activity或Fragment中注册和注销EventBox

    @Override
    public void onStart() {
        super.onStart();
        EventBox.getDefault().register(this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        EventBox.getDefault().unregister(this);
    }

2.添加event的订阅方法
通过@EventBoxSubscribe来注解方法,使该方法能被EventBox检测到,添加进subscription池 方法必须是public的!!!否则拿不到

    @EventBoxSubscribe
    public void acceptData(String s){
        //do something ...
        
    }

3.在需要的地方发送event,并指明接受者

  EventBox.getDefault().send("爱你一万年", MainActivity.class);




特性说明:

1.黏性事件:
如果你发送了event给予一个尚未启动的sbscriber(activity or fragment),则该event将被自动添加到EventBox的event缓存池中,直到目的activity启动时消费该event
2.多发模式:
鉴于EventBus的广播模式,EventBox可以采取指向性的一对多模式,使用时只需在send()方法中添加目的类.class,例如:

  EventBox.getDefault().send("爱你们一万年", FirstActivity.class ,SecondActivity.class,ThirdActivity.class...);

3.非指向性事件(2.0中已移除):
不推荐的方法,send只有一个参数:event时,将默认发送给所有符合条件的sbscriber,并且不做粘性事件处理,后注册的suscriber将无法收到它注册之前发送的event




注意事项:

同一类中可以有多个带@EventBoxSubscribe的方法
方法的名称可以自定义
方法仅可有一个参数,且同一类中所有带@EventBoxSubscribe的方法参数类型唯一
当event类型为int,float,double时,在接受方法中需指定参数类型为包装类:Integer,Float,Double
用户需要自己处理线程问题,推荐使用 rxjava2

About

Android 事件盒子,指向性传递event ,一款比EventBus 更好用的Android事件总线框架!

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages