最近在整公司的一个项目,其中有个IM即时通讯模块,是我负责的。由于公司项目比较大,于是我想把这模块独立出来做成一个子模块,这样就可以供其他模块调用了。
做java开发的人都知道,模块化开发涉及到代码解藕问题,我以前做过些javaweb的开发,知道javaweb里可以用ssh框架来进行模块化开发。但在android开发里面模块化开发框架就比较少了,知道可以用插件方式开发,这是最近比较流行的方法。
一开始我是决定用android的广播机制来进行解藕的,我的思路是这样的:项目主框架里面一开始用java的反射机制来实例化子模块的主类,子模块的主类实例化后会开启一个Service来监听主框架发送过来的操作命令,子模块收到操作命令执行对应方法然后通过广播将数据值返回给主框架。
这种框架,遇到的问题是:子模块的返回值不能及时返回到主框架里面,返回值的获取相当于是异步的。这种问题会给之后的很多需求造成困扰,所以放弃使用。
然后我决定用java的反射机制来实现这一框架,思路是:主框架通过反射来实例化子模块的主类,然后将子模块的主类的对象保存到主框架的静态变量里面(这样可以保证你每次调用的都是同一个对象,这很重要),然后通过反射获取到该对象的方法,执行方法并获取返回值。
第二种思路是比较好的,因为很多框架都是通过反射机制来写的,它没有第一种思路的问题。
这是我这几天来的一些思路总结。有个android模块化开发的框架在我脑子里,很模糊的影子,希望能够实现它。