一、注解类BindEventBus.java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface BindEventBus {
}
二、然后在Activity的基类跟Fragment的类中先判断当前子类是否绑定了BindEventBus注解,然后再决定是否进行注册跟反注册
注册:(在onCreate()方法中)
在BaseActivity.java注册EventBus:
//判断是否需要注册EventBus
if (this.getClass().isAnnotationPresent(BindEventBus.class)) {
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
}
反注册:(在onDestroy()方法中)
if (this.getClass().isAnnotationPresent(BindEventBus.class)) {
EventBus.getDefault().unregister(this);
}
在Fragment中同理。
三、在需要使用EventBus的子类中只需加上BindEventBus的注解即可,剩下的使用过程跟正常使用EventBus一样,不需要使用EventBus的子类不用做任何处理
在子类Activity中使用:
@BindEventBus
public class LoginActivity extends BaseActivity {
}
在Fragment中同理。
四、默认绑定一个事件,防止源码里面去找方法的时候找不到报错。
@Subscribe
public void onEvent(BaseActivity activity) {
}
五、这里引入的是3.1.1版本,api 'org.greenrobot:eventbus:3.1.1'
六、在EventBus.getDefault().post();的类不需要去绑定只需要在接受方去绑定@BindEventBus就可以啦,开心去使用吧,哈哈。