关于Android业务模块下沉的一些实践及总结

勿忘初心2018-10-24 10:21

此文已由作者徐铭阳授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。


前言

最近在做需求过程中,一些类似学校选择、城市选择等业务相关模块想单独抽离出来,遇到一些诸如模块管理、通信方面的问题来


背景

最近有一个需求是学校列表,没错,就是我们平时总见到的类似微信通讯录的需求,单看这个需求的话实现不复杂,网上也会有一些类似的实现。

中M有一些个性化的需求,比如字母索引不是A~Z总共26个字母而是按照学校的名字,假设没有这个首字母拼音的话这个字母就是不展示的,所以在做这个需求的时候造了个轮子满足这个需求,不过这个不是本文要说的重点。

由于学校选择、通讯录、城市选择等类似的选择器功能基本通用,教育产品有好几个产品,不止中M可能还会有云课堂、K12等也会有类似的需求,所以关于这个选择器准备作为一个底层业务模块单独拆分出来,联想到之前做中M路由的时候写过业务模块管理相关代码,现在两个结合起来正好可以满足需求


需求

  • edu-android-select模块注册
  • SelectActivity处理完选择事件之后需要把处理结果返回给调用的上层业务
  • 业务组件懒加载,不需要在app启动时初始化


解决方案

  • 模块注册
    • framework启动统一使用配置文件注册,每个module配置application入口,该application有两个功能,作为各个模块路由分发入口,做一些初始化工作,当然除非是模块运行必须的功能,其他功能不建议放在该入口application中
    • 业务模块提供的服务在每个模块application中注册,接口和实现分离方式,Map中保存键值对,键对应接口,值对应实现
    • framework统一管理所有的application和所有的service,上层业务想去获取某个service时通过ServiceManager获取,提供统一获取service方式
  • 回调处理
    • ICommonService中定义提供外部的接口以及给外部的回调,接口和实现分离
  • 业务service懒加载
      每个application入口中注册该模块提供的服务


实现


如有问题欢迎指正交流



网易云免费体验馆,0成本体验20+款云产品! 

更多网易技术、产品、运营经验分享请点击