使用注解将EventBus封装抽取到基类

注解类BindEventBus.java

/**

* desc:需要使用eventbus的activit和Fragment都需要以注解的方式绑定到此

*/

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public@interfaceBindEventBus {

}

然后在Activity的基类跟Fragment的类中先判断当前子类是否绑定了BindEventBus注解,然后再决定是否进行注册跟反注册

在BaseActivity.java注册EventBus:


privatevoidinitData(){

activity =this;

        initBaseMVP();

//判断是否需要注册EventBus

if(this.getClass().isAnnotationPresent(BindEventBus.class)) {

EventBus.getDefault().register(this);

        }

    }

反注册:

@Override

protectedvoidonDestroy(){

super.onDestroy();

if(this.getClass().isAnnotationPresent(BindEventBus.class)) {

EventBus.getDefault().unregister(this);

        }

    }

在Fragment中同理:

publicvoidonCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

        activity = (BaseActivity) getActivity();

fragment =this;

presenter = TUtil.getT(this,0);

model = TUtil.getT(this,1);

if(thisinstanceofBaseView) {

            presenter.setContext(activity);

presenter.setVM(this, model);

        }

//判断是否需要注册

if(this.getClass().isAnnotationPresent(BindEventBus.class)) {

EventBus.getDefault().register(this);

        }

    }

@Override

publicvoidonDestroy(){

super.onDestroy();

if(this.getClass().isAnnotationPresent(BindEventBus.class)) {

EventBus.getDefault().unregister(this);

        }

    }

在需要使用EventBus的子类中只需加上BindEventBus的注解即可,剩下的使用过程跟正常使用EventBus一样,不需要使用EventBus的子类不用做任何处理

在子类Activity中使用:


@BindEventBus

publicclassReleaseSettingActivityextendsBaseActivity{

在Fragment子类中使用:

@BindEventBus

publicclassThemeStudycircleFragmentextendsMListFragment{}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容