RxBus(一)

来源:互联网 发布:人工智能语义分析 编辑:程序博客网 时间:2024/05/21 06:24

    最近在整理项目源码中,打算抽取一些常用的代码,做成属于自己的项目代码库,以供其他项目或者以后做项目使用,减少重复工作,降低开发难度。

    如果已经在项目中使用了RxJava,可以考虑RxBus来替代EventBus等库,在实现同等的功能前提下,减少代码。由于本人正式在项目中使用RxJava的时间比较晚,所以,关于Rx的文章,很多具体实现是参考了其他blog,但由于无法考证哪位才是原作者,在此就不添加作者链接了,但还是在此先对大牛们表示感谢。关于具体如何实现RxBus,在此就不具体描述了,因为已经有很多blog都详细讲解了RxBus的实现方法,如果不清楚,可以参考我的代码或搜索一下RxBus的实现。该blog的关注点更多的是在项目中如何去使用RxBus,以及关于Event的方面的内容。

    

    RxBus的代码暂时封装的比较简单,后期根据实际情况,可能会做进一步封装,以便于使用更简单。在post方法原本是可以发送任何Event(即Event可以为Object类型)的,但我考虑到代码统一性,强制规定了只能发送RxEvent类型的事件。前期的做法是定义了一个没有任何变量、方法的类,如果需要使用Event,则自定义一个Event并继承自RxEvent,这样,在业务层处理Event的时候,所有的Event都是RxEvent的子类。但最近在整理项目代码的时候,发现需要使用Event的时候,需要自己定义N多的Event,感觉使用起来也挺繁琐的。后面想到了Handler和Message,于是打算学习一下Message的做法,封装一个自己的RxEvent。目前给RxEvent定义了两个变量what和obj,所有都会发送RxEvent对象,同时处理的时候,都去处理RxEvent对象,不需要再去自定义多个子Event,根据what区分是哪个发送的事件,根据obj区分事件的具体内容,这样就避免了使用者每次都得自己定义 

    但是,这个RxEvent只是一个最初的版本,后续我将参考Message的源码,加入对象池,以便于RxEvent对象的复用。

    由于个人的技术水平有限,难免会有疏漏,欢迎拍砖。如有错误,欢迎指正,谢谢!

0 0