美文网首页Android技术汇总
注解开发-自定义EventBus之路2

注解开发-自定义EventBus之路2

作者: 土肥圆的诺诺 | 来源:发表于2018-10-10 20:46 被阅读167次

    虽然我们功能比较低配,但是也得显得高大上,我们这次主要依赖于注解完成低配版本传递消息功能,什么优先级和黏性事件可以没事的时候自己推导一下。
    注解开发-自定义EventBus之路1 ,注解篇在这里
    https://www.jianshu.com/p/e59059a509f1

    没事我不要脸
    我们的自定义注解和ThreadMode
    自定义注解 ThreadMode

    然后我们要写注册和反注册方法,这里我们要先想想怎么写?
    最终目的肯定是调用我们加了自定义注解的方法
    反推,我们需要调用注解的方法就需要几个要素,1,对象实例,2方法,3,方法参数
    在android里面,比如我们打开了一个页面,我们不能像普通对象一样,直接new一个然后点XXX方法这是不行的,android页面存在于栈列中,所有我们必须在注册的时候,引用页面的实例,在反注册那里删除实例。
    方法这里,我们可以根据查找上面标识了我们自定义注解的方法,然后和存在的实例Context对应起来,是一个1VS多的状态,基本可以设定为Context--》List<我们注解的方法>。最后一点,参数,我们只需要关注,在post的时候,发送的参数和我们上面的List<我们注解的方法>里面方法参数能对上,就开始反射调用这个方法。
    那我们按照这个思路开始写代码
    私有化构造函数



    书写Context和1对多注解方法的集合,每次注册的时候存放方法的集合



    注册方法,
    注册方法
    反注册方法,避免内存泄露,毕竟我们引用了实例对象
    反注册方法
    发送消息方法 post,当我们发送一个事件的事情,需要对我们存的Context的符合对应参数的方法进行反射调用

    根据发送的事件类型,查找符合匹配参数的方法和对用的Context

    反射调用


    写完了测试一下,我们开启一个Service和我们主页面俩地方进行注册,发送事件试试,我们写几个方法测试下看看是否符合我们的设想
    onCreate注册 onDestroy 反注册


    注册 反注册

    一个符合要求的方法,一个不符合要求的方法


    service也写好,注意注册

    添加好点击事件,开启我们的Service,点击按钮发送事件,查看log

    我们的符合要求的方法接收到了消息,不符合的没啥动静,完美的成功了

    我们写的low版本的事件总线完成了,那么剩下的黏性发送和优先级,ThreadMode这些我们是不是可以抽时间测试一下呢,等我抽空写完传基友网上给大家看看。

    已经上传到基友网,地址:https://github.com/594dudulang/LEventBus
    下次我们写一个路由router的low版本,期待吧!

    相关文章

      网友评论

        本文标题:注解开发-自定义EventBus之路2

        本文链接:https://www.haomeiwen.com/subject/xpvmaftx.html